Code: Select all
(context '->>)
(define-macro (->>:->> E form)
(if (empty? (args))
(if (list? form)
(eval (push E form -1))
(eval (list form E)))
(eval (cons '->> (cons (list '->> E form) (args))))))
(context '->)
(define-macro (->:-> E form)
(if (empty? (args))
(if (list? form)
(eval (cons (first form) (cons E (rest form))))
(eval (list form E)))
(eval (cons '-> (cons (list '-> E form) (args))))))
(context MAIN)
Code: Select all
: (exp (sqrt (abs -3)))
5.652233674
Code: Select all
: (-> -3 abs sqrt exp)
5.652233674
Code: Select all
: (-> 8 (div 4))
2
Code: Select all
: (->> 8 (div 4))
0.5
Code: Select all
(setq alist '((a 29)(b 25)(c 21)(d 64)))
: (->> alist (map last) (filter (curry > 50)) (apply +))
75