[英]Clojure functions for Emacs?
我想知道是否有一组Emacs Lisp代码实现了一些Clojure的功能。 例如, - >和 - >>和comp和partial,以及其他?
谢谢。
我刚才将->
和->>
宏移植到了Emacs Lisp。 我偶尔在我的配置代码中使用它们,它们似乎工作正常。
(defmacro -> (e &rest es)
(if (and (consp es) (not (consp (cdr es))))
(if (consp (car es))
`(,(caar es) ,e ,@(cdar es))
`(,(car es) ,e))
(if (consp es)
`(-> (-> ,e ,(car es)) ,@(cdr es))
e)))
(defmacro ->> (e &rest es)
(if (and (consp es) (not (consp (cdr es))))
(if (consp (car es))
`(,@(car es) ,e)
`(,(car es) ,e))
(if (consp es)
`(->> (->> ,e ,(car es)) ,@(cdr es))
e)))
你一定要看看dash.el。 它提供了许多Clojure灵感的功能,如:
(fn list)
(fn initial-value list)
(fn initial-value list)
(fn list)
(fn list)
(pred list)
(pred list)
(fn list)
(pred rep list)
(fn list)
(l)
(&rest lists)
(fn list)
(&rest args)
(pred list)
(pred list)
(pred list)
(pred list)
(pred list)
(list fn)
(list pred fn)
(num fn)
(nx)
(list from &optional to)
(n list)
(n list)
(pred list)
(pred list)
(n list)
(nx list)
(pred list)
(pred list)
(n list)
(n step list)
(n step list)
(n list)
(fn list)
(fn list)
(fn list)
(sep list)
(&rest lists)
(fn list1 list2)
(list1 list2)
(pred list)
(pred list)
(list list2)
(list list2)
(list list2)
(list)
(list element)
(predicate list)
(fn &rest args)
(fn &rest args)
(fn)
(x &optional form &rest more)
(x form &rest more)
(x form &rest more)
(var-val &rest body)
(vars-vals &rest body)
(var-val then &optional else)
(vars-vals then &optional else)
(car cdr)
(list)
我发现这个库非常有用。
不确定其他人,但部分是在Emacs的lexbind分支中实现为“咖喱”。
我最近写过这些宏。 它们不是递归的,而且不那么冗长。 但我还没有广泛测试它们。
(defmacro ->> (x &rest forms)
(while forms
(setq x (append (pop forms) (list x))))
x)
(defmacro -> (x &rest forms)
(while forms
(let ((form (pop forms)))
(push x (cdr form))
(setq x form)))
x)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.