diff --git a/docs/contrib/multi.rst b/docs/contrib/multi.rst index 2f703a7..b0a035f 100644 --- a/docs/contrib/multi.rst +++ b/docs/contrib/multi.rst @@ -25,7 +25,7 @@ with the arity overloaded one. Inspired by Clojures take on ``defn``. => (fun 1 2 3) "a b c" - => (defn add [a b] + => (defn add [a b] ... (+ a b)) => (add 1 2) 3 @@ -47,13 +47,13 @@ on the code by `Adam Bard`_. => (defmulti area [shape] ... "calculate area of a shape" ... (:type shape)) - + => (defmethod area "square" [square] ... (* (:width square) ... (:height square))) - + => (defmethod area "circle" [circle] - ... (* (** (:radius circle) 2) + ... (* (** (:radius circle) 2) ... 3.14)) => (default-method area [shape] @@ -75,7 +75,7 @@ at least key :type. The value that corresponds to this key is returned and is used to selected between different implementations. ``defmethod`` defines a possible implementation for multimethod. It works -otherwise in the same way as ``defn``, but has an extra parameters +otherwise in the same way as ``defn``, but has an extra parameters for specifying multimethod and which calls are routed to this specific implementation. In the example, shapes with "square" as :type are routed to first function and shapes with "circle" as :type are routed to second diff --git a/docs/contrib/profile.rst b/docs/contrib/profile.rst index 6edbd34..157f415 100644 --- a/docs/contrib/profile.rst +++ b/docs/contrib/profile.rst @@ -16,12 +16,12 @@ Macros profile/calls -------------- -``profile/calls`` allows you to create a call graph visualization. +``profile/calls`` allows you to create a call graph visualization. **Note:** You must have `Graphviz `_ installed for this to work. -Usage: `(profile/calls (body))` +Usage: `(profile/calls (body))` Example: @@ -50,8 +50,8 @@ Example: hey there 2 function calls in 0.000 seconds - + Random listing order was used - + ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 1 0.000 0.000 0.000 0.000 {print} diff --git a/docs/contrib/sequences.rst b/docs/contrib/sequences.rst index 1c675e0..b808955 100644 --- a/docs/contrib/sequences.rst +++ b/docs/contrib/sequences.rst @@ -55,7 +55,7 @@ This results in the sequence ``[0 1 1 2 3 5 8 13 21 34 ...]``. seq === -Usage: ``(seq [n] (* n n)`` +Usage: ``(seq [n] (* n n))`` Creates a sequence defined in terms of ``n``. diff --git a/docs/language/api.rst b/docs/language/api.rst index e4c6f42..73066ee 100644 --- a/docs/language/api.rst +++ b/docs/language/api.rst @@ -132,7 +132,7 @@ point per form via the name instead of always the first or last argument. ... :discovered {:year 1907 ... :name "Sir Joseph Cooke Verco"}}]) - ;; retrieve name of first entry + ;; retrieve name of first entry => (as-> (first data) it ... (:name it)) 'hooded cuttlefish' @@ -164,7 +164,7 @@ point per form via the name instead of always the first or last argument. .. note:: - In these examples, the REPL will report a tuple (e.g. `('Sepia prashadi', + In these examples, the REPL will report a tuple (e.g. `('Sepia prashadi', 'Sepia prashadi')`) as the result, but only a single value is actually returned. @@ -233,7 +233,7 @@ as the user enters *k*. .. code-block:: clj - (while True (if (= "k" (raw-input "? ")) + (while True (if (= "k" (input "? ")) (break) (print "Try again"))) @@ -296,7 +296,7 @@ As shown below, only the first matching result block is executed. ... (cond [(< value 5) (print "value is smaller than 5")] ... [(= value 5) (print "value is equal to 5")] ... [(> value 5) (print "value is greater than 5")] - ... [True (print "value is something that it should not be")])) + ... [True (print "value is something that it should not be")])) => (check-value 6) value is greater than 5 @@ -487,11 +487,11 @@ Parameters may have the following keywords in front of them: => (defn total-value [value &optional [value-added-tax 10]] ... (+ (/ (* value value-added-tax) 100) value)) - => (total-value 100) + => (total-value 100) 110.0 - => (total-value 100 1) - 101.0 + => (total-value 100 1) + 101.0 &kwargs Parameter will contain 0 or more keyword arguments. @@ -525,7 +525,7 @@ Parameters may have the following keywords in front of them: => (defn zig-zag-sum [&rest numbers] (setv odd-numbers (list-comp x [x numbers] (odd? x)) - even-numbers (list-comp x [x numbers] (even? x))) + even-numbers (list-comp x [x numbers] (even? x))) (- (sum odd-numbers) (sum even-numbers))) => (zig-zag-sum) @@ -1115,8 +1115,8 @@ that ``import`` can be used. ;; import sys as systest (import [tests.resources [kwtest function-with-a-dash]] [os.path [exists - isdir :as dir? - isfile :as file?]] + isdir :as dir? + isfile :as file?]] [sys :as systest]) ;; Import all module functions into current namespace @@ -1398,7 +1398,7 @@ repexpr]])``, but a less error-prone approach is to change the definition of (defmacro foo [n] `(do (require mymodule) - (mymodule.repexpr ~n (raw-input "Gimme some input: ")))) + (mymodule.repexpr ~n (input "Gimme some input: ")))) It's wise to use ``(require mymodule)`` here rather than ``(require [mymodule [repexpr]])`` to avoid accidentally shadowing a function named ``repexpr`` in @@ -1856,7 +1856,7 @@ will be 4 (``1+1 + 1+1``). => (addition 1 1) 4 => (with-decorator inc2-decorator inc-decorator - ... (defn addition [a b] (+ a b))) + ... (defn addition [a b] (+ a b))) => (addition 1 1) 8 diff --git a/docs/language/core.rst b/docs/language/core.rst index 7c8963c..d292d75 100644 --- a/docs/language/core.rst +++ b/docs/language/core.rst @@ -652,7 +652,7 @@ calling ``(f val-in-result val-in-latter)``. .. code-block:: hy - => (merge-with (fn [x y] (+ x y)) {"a" 10 "b" 20} {"a" 1 "c" 30}) + => (merge-with + {"a" 10 "b" 20} {"a" 1 "c" 30}) {u'a': 11L, u'c': 30L, u'b': 20L} @@ -1201,9 +1201,9 @@ if *from-file* ends before a complete expression can be parsed. 4 => (import io) => (setv buffer (io.StringIO "(+ 2 2)\n(- 2 1)")) - => (eval (read :from_file buffer)) + => (eval (read :from-file buffer)) 4 - => (eval (read :from_file buffer)) + => (eval (read :from-file buffer)) 1 => (with [f (open "example.hy" "w")] @@ -1399,8 +1399,8 @@ are available. Some of their names have been changed: - ``groupby`` has been changed to ``group-by`` - ``takewhile`` has been changed to ``take-while`` - + - ``dropwhile`` has been changed to ``drop-while`` - + - ``filterfalse`` has been changed to ``remove`` diff --git a/docs/language/internals.rst b/docs/language/internals.rst index 31adf0d..5023f7b 100644 --- a/docs/language/internals.rst +++ b/docs/language/internals.rst @@ -323,13 +323,13 @@ Will turn into:: else: _temp_name_here = False - print _temp_name_here + print(_temp_name_here) OK, that was a bit of a lie, since we actually turn that statement into:: - print True if True else False + print(True if True else False) By forcing things into an ``ast.expr`` if we can, but the general idea holds. @@ -412,10 +412,11 @@ so our re-written ``nif`` would look like: (defmacro nif [expr pos-form zero-form neg-form] (with-gensyms [g] - `(setv [~g ~expr]) - `(cond [(pos? ~g) ~pos-form] - [(zero? ~g) ~zero-form] - [(neg? ~g) ~neg-form]))) + `(do + (setv ~g ~expr) + (cond [(pos? ~g) ~pos-form] + [(zero? ~g) ~zero-form] + [(neg? ~g) ~neg-form])))) Finally, though we can make a new macro that does all this for us. :ref:`defmacro/g!` will take all symbols that begin with ``g!`` and automatically call ``gensym`` with the diff --git a/docs/language/syntax.rst b/docs/language/syntax.rst index 0bcde89..ea089d6 100644 --- a/docs/language/syntax.rst +++ b/docs/language/syntax.rst @@ -14,7 +14,7 @@ In addition to regular numbers, standard notation from Python 3 for non-base 10 integers is used. ``0x`` for Hex, ``0o`` for Octal, ``0b`` for Binary. .. code-block:: clj - + (print 0x80 0b11101 0o102 30) Underscores and commas can appear anywhere in a numeric literal except the very diff --git a/docs/quickstart.rst b/docs/quickstart.rst index a77ebf2..ca00c73 100644 --- a/docs/quickstart.rst +++ b/docs/quickstart.rst @@ -30,7 +30,7 @@ Quickstart => (+ "Hyllo " "World" "!") 'Hyllo ' + 'World' + '!' - + 'Hyllo World!' *OMG! That's amazing! I want to write a Hy program.* diff --git a/docs/tutorial.rst b/docs/tutorial.rst index 00a15b4..b85bf3a 100644 --- a/docs/tutorial.rst +++ b/docs/tutorial.rst @@ -120,7 +120,7 @@ This is the basic premise of Lisp. Lisp stands for "list processing"; this means that the structure of the program is actually lists of lists. (If you're familiar with Python lists, imagine the entire same structure as above but with square brackets -instead, any you'll be able to see the structure above as both a +instead, and you'll be able to see the structure above as both a program and a data structure.) This is easier to understand with more examples, so let's write a simple Python program, test it, and then show the equivalent Hy program:: @@ -472,7 +472,7 @@ like:: Return our copy of x """ return self.x - + And we might use it like:: bar = FooBar(1) @@ -492,20 +492,20 @@ In Hy: (defn get-x [self] "Return our copy of x" self.x)) - + And we can use it like: .. code-block:: clj (setv bar (FooBar 1)) (print (bar.get-x)) - + Or using the leading dot syntax! .. code-block:: clj (print (.get-x (FooBar 1))) - + You can also do class-level attributes. In Python::