You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Usually, an s-expression is defined recursively as either an atom or a cons cell, with the cons cell consisting of a pair of symbolic expressions. Lists are defined as nested cons cells ending with a NIL/empty list atom. Cons cells are usually presented using dot notation: (1 . 2).
In Common Lisp:
* (equal '(1 . (2 . nil)) '(1 2))
T
In Hy:
=> (= '(1 . (2 . ())) '(1 2))
True
sexpr doesn't understand it, and treats dot as a floating point atom:
In [6]: parse('(1 . (2 . ())') == parse('(1 2)')
Out[6]: False
In [7]: parse('(1 . (2 . ())')
Out[7]: [SExpr([Atom int('1'), Atom float('.'), SExpr([Atom int('2'), Atom float('.'), SExpr([])])])]
While using dot notation for normal list is fairly obscure given the convenient syntactic sugar of (1 2), it's pretty useful for the alist data structure: ((key1 . value1) (key2 . value2)).
The text was updated successfully, but these errors were encountered:
Usually, an s-expression is defined recursively as either an atom or a cons cell, with the cons cell consisting of a pair of symbolic expressions. Lists are defined as nested cons cells ending with a NIL/empty list atom. Cons cells are usually presented using dot notation:
(1 . 2)
.In Common Lisp:
In Hy:
sexpr doesn't understand it, and treats dot as a floating point atom:
While using dot notation for normal list is fairly obscure given the convenient syntactic sugar of
(1 2)
, it's pretty useful for the alist data structure:((key1 . value1) (key2 . value2))
.The text was updated successfully, but these errors were encountered: