1249 Commits

Author SHA1 Message Date
Christian Weilbach
2e4b77267e Remove profile fn.
https://github.com/hylang/hy/pull/522#issuecomment-35972534
2014-02-26 00:03:42 +01:00
Christian Weilbach
46d77f69e6 Fix disassembly, add butlast, profile 2014-02-24 23:08:40 +01:00
Christopher Allan Webber
d93f304220 Fix errors on Python 3.
Some unicode issues were fixed for Python 2 in 75748eb05dc5e38a88da2fa3789e9aa629ac65fc
but broke pretty much all Python 3 exceptions in Hy.
2014-02-23 17:16:56 -06:00
Berker Peksag
6829d6fb3a Tweak the zipwith doc a bit and add @kirbyfan64 to AUTHORS. 2014-02-22 02:21:34 +02:00
kirbyfan64
d282d65cde Add zipwith 2014-02-22 02:14:27 +02:00
Berker Peksag
243a93499f Merge pull request #504 from algernon/h/import-error-reporting
hy/compiler.py: import only handles HySymbol and HyList, bail on others
2014-02-21 16:47:13 +02:00
James King
b97e0258e1 Fix for #497
One would expect the form:

    > (defmacro a (&rest b) b)
    > (a 1 2)

To return a tuple object but we have no Hy model so it returns a HyList.
Not sure if this is the right thing to do.
2014-02-19 00:09:37 -05:00
Paul Tagliamonte
e219973853 Fix up quoting keywords.
Fixes this:

=> :foo
'\ufdd0:foo'
=> `:foo
'\ufdd0\ufdd0:foo'
2014-02-17 18:00:31 -05:00
Paul Tagliamonte
2a8a7f3f79 Merge branch 'master' into pr/484
Conflicts:
	AUTHORS
2014-02-15 11:57:43 -05:00
Paul Tagliamonte
2f751df0f6 Merge branch 'master' into pr/489 2014-02-15 11:49:12 -05:00
Gergely Nagy
6c846a24b1
hy/compiler.py: import only handles HySymbol and HyList, bail on others
When (import) encounters anything but a HySymbol or HyList, raise an
exception, as that is not valid in Hy. Previously, anything other than a
HySymbol or HyList was simply ignored, turning that particular import
into a no-op, which was both wrong and confusing.

Reported-by: Richard Parsons <richard.lee.parsons@gmail.com>
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2014-02-11 17:29:50 +01:00
han semaj
24a1567b00 Implement every? and some 2014-02-11 21:42:56 +13:00
Foxboron
66366b5bc9 Added defmulti 2014-02-05 16:07:48 +01:00
Abhishek L
a41a3c7edc faster distinct: maintain seen items in a set
* hy/core/language.hy: maintain the seen items in a set instead of a
  list in `distinct`. This is much faster for lookups.
2014-02-04 01:35:41 +05:30
Abhishek L
4432c00c59 Replace forgotten instances of coll? function
Replacing coll? wherever applicable
2014-02-03 21:48:30 +05:30
Gergely Nagy
e8dfe5bfb2
hy.contrib.walk: Add support for walking cons cells
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2014-02-01 18:36:57 +01:00
Gergely Nagy
fa24042cb0 hy.contrib.walk: Add (macroexpand-all)
This function will recursively perform all possible macroexpansions in
the supplied form. Unfortunately, it also traverses into quasiquoted
parts, where it shouldn't, but it is a useful estimation of macro
expansion anyway.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2014-02-01 18:34:12 +01:00
Gergely Nagy
817b4688d8 hy.contrib.walk: New contrib module for walking the Hy AST
The hy.contrib.walk module provides a few functions to walk the Hy AST,
and potentially transform it along the way. The main entry point
is (walk), which takes two functions and a form as arguments, and
applies the first (inner) function to each element of the form, building
up a data structure of the same type as the original. Then applies outer
(the second function) to the result.

Two convenience functions are provided: (postwalk) and (prewalk), which
do a depth-first, post/pre-order traversal of the form.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2014-02-01 18:34:12 +01:00
Abhishek L
4b54e3c748 Merge master onto pr/471
Conflicts:
	hy/core/language.hy
2014-01-30 21:50:23 +05:30
Halit Alptekin
75748eb05d Fix unicode error #483 2014-01-29 15:58:49 +02:00
James King
cbb8cc1d37 Add integer-char? to core 2014-01-28 17:28:41 -05:00
Brian McKenna
6bfc4a8471 Attempt to fix HyDict#items for Python 3
Looks like Python 3 changed `zip` to returning an iterable and not a
list. We should be good to just wrap the call in `list`.
2014-01-26 10:56:40 -07:00
Brian McKenna
0177541d9b Add items, values and keys methods to HyDict
Useful for macros, for example:

    (defmacro defn-checked [n x b]
      `(defn ~n [(unquote-splice (.keys x))]
        (print "Expecting:" (unquote-splice (.values x))) ~b))

    (defn-checked hello {name str age int}
      (print "Hello" name "you are" age))

    (hello "Godzilla" 60)

    ;; Expecting: <type 'str'> <type 'int'>
    ;; Hello Godzilla you are 60
2014-01-25 15:55:38 -07:00
Nicolas Dandrimont
52144820ca Add a cons object and related mechanisms
Closes: #183
2014-01-23 23:08:52 +01:00
Nicolas Dandrimont
bb2b868aaf Make empty macroexpansions do the right thing 2014-01-23 23:07:31 +01:00
Nicolas Dandrimont
54757b8316 Slicing a HyList makes the same kind of object again 2014-01-23 23:07:31 +01:00
Nicolas Dandrimont
fad67bd8f5 Merge branch 'master' into pr/468 2014-01-23 22:14:23 +01:00
Nicolas Dandrimont
b99af411c8 Merge branch 'master' into pr/461
Conflicts:
	tests/native_tests/native_macros.hy
2014-01-23 21:57:17 +01:00
Abhishek L
10f1f24a18 Adding a simple `identity' function
* hy/core/language.hy: Adding a simple `identity` function that returns
  the argument supplied to it

* docs/language/core.rst: Updated docs with identity function
2014-01-22 00:56:28 +05:30
Gergely Nagy
3bad6c14ee
hy/core/macros.hy: Reimplement (unless) in terms of (if-not)
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2014-01-18 22:57:29 +01:00
Gergely Nagy
e90b24b73a
hy/core/macros.hy: Add an (if-not) macro
Sometimes it is better to start with the false condition, sometimes that
makes the code clearer. For that, the (if-not) macro, which simply
reverses the order of the condition blocks, can be of great use.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2014-01-18 22:56:20 +01:00
Gergely Nagy
21709f0199 hy/core/macros.hy: Add defn-alias / defun-alias
In the same vein as defmacro-alias, this implements defn-alias /
defun-alias, which does essentially the same thing as defmacro-alias,
but for functions.

Signed-off-by: Gergely Nagy <algernon@balabit.hu>
2014-01-18 16:09:35 +01:00
Nicolas Dandrimont
eedebd12b3 Merge branch 'master' into pr/443 2014-01-17 20:25:09 +01:00
Nicolas Dandrimont
2094133193 Merge branch 'master' into pr/441 2014-01-17 20:23:49 +01:00
Nicolas Dandrimont
1b435a9a2a Merge branch 'master' into pr/439 2014-01-17 20:18:43 +01:00
Nicolas Dandrimont
e0f9c9c191 Merge branch 'master' into pr/438 2014-01-17 20:14:16 +01:00
Nicolas Dandrimont
512f14d195 Merge branch 'master' into pr/437 2014-01-17 20:09:39 +01:00
Foxboron
a35ecc41bd Fix reader macros to actually be macros 2014-01-17 01:07:47 +01:00
Gergely Nagy
8ef02a54b5 hy/lex/parser.py: Add support for sub-object mangling
With this patch, every identifier is split up along dots, each part gets
separately mangled, and then it is all joined back together. This allows
for fun stuff like (.foo? (Foo)), and even more contrived examples.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2014-01-16 16:23:35 +01:00
Gergely Nagy
ceb615d010 hy/lex/parser.py: Move most of the identifier mangling into a def
As a refactoring step, move the identifier mangling done in t_identifier
into a separate def.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2014-01-16 16:20:51 +01:00
Nicolas Dandrimont
8bfa4f33fc Add set comprehensions, dict comprehensions and generator expressions
Closes: #14 (woo, two-digit tickets)
2014-01-16 00:49:48 +01:00
Berker Peksag
25459177eb Move "hy on meth" example to eg/. 2014-01-14 06:03:57 +02:00
Paul Tagliamonte
5a64f18726 Refactor (loop) in terms of fnr; change to use decorator. 2014-01-13 20:37:25 -05:00
Gergely Nagy
5b78735011 hy/cmdline.py: Add support for running with --spy -i
There's no reason why one would need to choose between --spy and -i, so
pass down options.spy to run_icommand, and then to HyREPL, so we can
have both.

Signed-off-by: Gergely Nagy <algernon@balabit.hu>
2014-01-13 22:12:32 +01:00
Paul Tagliamonte
0afbbeb68c Add (recur) for functions and stuff. 2014-01-12 18:53:08 -05:00
Clinton N. Dreisbach
47d67b0062 Added loop/recur macro for tail-call optimization 2014-01-12 14:02:27 -05:00
Paul Tagliamonte
5fc047e77c Merge branch 'master' into pr/425
Conflicts:
	hy/core/language.hy
2014-01-12 12:48:26 -05:00
Nicolas Dandrimont
1e793e696a Fix indentation of *exports* 2014-01-12 17:34:05 +01:00
Nicolas Dandrimont
14a791f37b Merge branch 'f/is-coll' of https://github.com/theanalyst/hy into theanalyst-f/is-coll 2014-01-12 17:33:17 +01:00
Abhishek L
ec8220c2b7 Merge master onto pr/428 2014-01-12 20:33:25 +05:30