From f73c862ffa65d84a9d485b795e33f0bd0a9e067c Mon Sep 17 00:00:00 2001 From: Csilla Nagyne Martinak Date: Sat, 17 Oct 2015 13:56:35 +0200 Subject: [PATCH 1/2] docs: Document the (keyword) and (name) functions Closes #733 Signed-off-by: Csilla Nagyne Martinak --- docs/language/core.rst | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/language/core.rst b/docs/language/core.rst index 58b00d9..b3bb65f 100644 --- a/docs/language/core.rst +++ b/docs/language/core.rst @@ -436,6 +436,26 @@ themselves as an iterator when ``(iter x)`` is called. Contrast with => (iterator? (iter {:a 1 :b 2 :c 3})) True +.. _keyword-fn: + +keyword +------- + +.. versionadded:: 0.10.1 + +Usage: ``(keyword "foo")`` + +Create a keyword from the given value. Strings, numbers, and even +objects with the `__name__` magic will work. + +.. code-block:: hy + + => (keyword "foo") + u'\ufdd0:foo' + + => (keyword 1) + u'\ufdd0:1' + .. _keyword?-fn: keyword? @@ -536,6 +556,24 @@ calling ``(f val-in-result val-in-latter)``. {u'a': 11L, u'c': 30L, u'b': 20L} +.. _name-fn: + +name +---- + +.. versionadded:: 0.10.1 + +Usage: ``(name :keyword)`` + +Convert the given value to a string. Keyword special character will be +stripped. Strings will be used as is. Even objects with the `__name__` +magic will work. + +.. code-block:: hy + + => (name :foo) + u'foo' + .. _neg?-fn: neg? From d79e56f2ef9754e2d9c3ff6b55e60c96f9b46f6b Mon Sep 17 00:00:00 2001 From: Csilla Nagyne Martinak Date: Sat, 17 Oct 2015 13:32:01 +0200 Subject: [PATCH 2/2] docs/tutorial: Add a short (require) example Adds a short (require) example, along with a few words on why macros can't be imported. Closes #966. Signed-off-by: Csilla Nagyne Martinak --- docs/tutorial.rst | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/tutorial.rst b/docs/tutorial.rst index cf76538..c78fa83 100644 --- a/docs/tutorial.rst +++ b/docs/tutorial.rst @@ -557,10 +557,21 @@ characters that soon): => #↻(1 2 3 +) 6 -Macros are useful when one wished to extend the Hy or write their own +Macros are useful when one wishes to extend the Hy or write their own language on top of that. Many features of Hy are macros, like ``when``, ``cond`` and ``->``. +To use macros defined in a different module, it is not enough to +``import`` the module, because importing happens at run-time, while we +would need macros at compile-time. Instead of importing the module +with macros, it must be ``require``d: + +.. code-block:: clj + + => (require tutorial.macros) + => (rev (1 2 3 +)) + 6 + Hy <-> Python interop =====================