上面刚刚写的,感觉可能用处不大,Clojure、Elixir 社区可能觉得 ->
和 |>
很好使,但我觉得不适合 Emacs Lisp,事实上我从来就没有用 ->
,因为:
-
对参数位置有要求,->
必须是第一个参数,这就要求 API 把重要参数放到第一个位置,而 Emacs Lisp 没这个习惯,对比同一个 API:
;; Emacs Lisp
(string-prefix-p PREFIX STRING &optional IGNORE-CASE)
;; Clojure
(clojure.string/starts-with? s substr)
# Elixir
starts_with?(string, prefix)
-
Emacs Lisp 的 Eldoc 目前不支持 Threading Macro,参数提示会出错:
(Eldoc 错误地把 TRIM-LEFT
当作 STRING
)
cireu
2
这个东西dash就有吧. 漏看了抱歉
->默认把左端输出拼接到第一个参数位置, ->> 默认放最后, → 允许你用it
作为标识来指定位置.
不过这三个macro的本质都是组装列表, 和FP感觉扯不上太大关系
用pipeline主要还是可读性比较好, 而且有-->
参数位置也不算什么大事
嗯,我的看法是 ->
等 Threading Macro 不会在 Emacs Lisp 社区普及,达到 Clojure、Elixir 那种地步,因为缺少普及的土壤[1],而不是因为 Threading Macro 本身。
[1] 所谓「土壤」,这有个 Elixir 的例子,Elixir 似乎只有 |>
,相当于只有 ->
,甚至:
Elixir recommends the “subject” argument to be the first one,
Pipe operator and multiple parameters · Issue #1156 · elixir-lang/elixir · GitHub