mirror of
https://github.com/carp-lang/Carp.git
synced 2024-09-11 05:25:28 +03:00
Merge pull request #622 from hellerve/cxr
macros: add cxr, nthcar, and nthcdr
This commit is contained in:
commit
e850da236f
@ -73,6 +73,25 @@
|
||||
(defndynamic cdddar [pair] (cdr (cdr (cdr (car pair)))))
|
||||
(defndynamic cddddr [pair] (cdr (cdr (cdr (cdr pair)))))
|
||||
|
||||
(defndynamic cxr [x pair]
|
||||
(if (= (length x) 0)
|
||||
(list 'quote pair)
|
||||
(list
|
||||
(if (= 'a (cadr x))
|
||||
'car
|
||||
(if (= 'd (cadr x))
|
||||
'cdr
|
||||
(macro-error "`cxr` expects either `a` or `d` symbols, got " (cadr x))))
|
||||
(if (= 1 (car x))
|
||||
(cxr (cddr x) pair)
|
||||
(cxr (cons (- (car x) 1) (cdr x)) pair)))))
|
||||
|
||||
(defndynamic nthcdr [n pair]
|
||||
(cxr (list n 'd) pair))
|
||||
|
||||
(defndynamic nthcar [n pair]
|
||||
(cxr (list 1 'a n 'd) pair))
|
||||
|
||||
(defndynamic eval-internal [form]
|
||||
(list 'do
|
||||
(list 'defn 'main [] (list 'IO.println* form))
|
||||
|
Loading…
Reference in New Issue
Block a user