Emacs的Clojure功能?

Eli*_*der 9 emacs clojure

我想知道是否有一组Emacs Lisp代码实现了一些Clojure的功能.例如, - >和 - >>和comp和partial,以及其他?

谢谢.

Mic*_*zyk 12

我刚才将这些->->>宏移植到了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)))
Run Code Online (Sandbox Code Playgroud)


Boz*_*sov 5

你绝对应该看看dash.el。它提供了许多受 Clojure 启发的功能,例如:

  • -地图 (fn list)
  • -reduce-from (fn initial-value list)
  • -reduce-r-from (fn initial-value list)
  • -降低 (fn list)
  • -减速器 (fn list)
  • -筛选 (pred list)
  • -消除 (pred list)
  • -保持 (fn list)
  • -map-when (pred rep list)
  • -地图索引 (fn list)
  • -压平 (l)
  • -concat (&rest lists)
  • -mapcat (fn list)
  • -缺点* (&rest args)
  • -数数 (pred list)
  • -任何? (pred list)
  • -全部? (pred list)
  • -没有任何? (pred list)
  • -只有一些? (pred list)
  • -每个 (list fn)
  • -每次 (list pred fn)
  • -dotimes (num fn)
  • -重复 (n x)
  • -片 (list from &optional to)
  • -拿 (n list)
  • -降低 (n list)
  • - 暂时 (pred list)
  • -drop-while (pred list)
  • -split-at (n list)
  • -插入-在 (n x list)
  • -拆分 (pred list)
  • -分离 (pred list)
  • -划分 (n list)
  • -partition-all-in-steps (n step list)
  • -分步 (n step list)
  • -partition-all (n list)
  • -partition-by (fn list)
  • -按头分区 (fn list)
  • -通过...分组 (fn list)
  • -插入 (sep list)
  • -交错 (&rest lists)
  • -zip-with (fn list1 list2)
  • -压缩 (list1 list2)
  • -第一的 (pred list)
  • -最后的 (pred list)
  • -联盟 (list list2)
  • -区别 (list list2)
  • -路口 (list list2)
  • -清楚的 (list)
  • - 包含? (list element)
  • -种类 (predicate list)
  • -部分的 (fn &rest args)
  • -rpartial (fn &rest args)
  • -申请 (fn)
  • -> (x &optional form &rest more)
  • ->> (x form &rest more)
  • --> (x form &rest more)
  • -when-let (var-val &rest body)
  • -当-​​让* (vars-vals &rest body)
  • -if-let (var-val then &optional else)
  • -if-let* (vars-vals then &optional else)
  • !缺点 (car cdr)
  • !cdr (list)

我发现这个库非常有用。