Clojure有一个类似于Haskell的Dollar Symbol的运算符吗?

时间:2012-05-27 23:13:35

标签: haskell clojure functional-programming operators

也许我应该接受括号,但我不禁感到像Haskell中存在的美元符号这样的运算符会真正清理代码并提高可读性。

我正在寻找能够优先/绑定到它后面的所有符号的东西。

putStrLn (show $ 1 + 1)
putStrLn $ show (1 + 1)
putStrLn $ show $ 1 + 1

我了解线程运算符。这些非常有用,肯定会增加可读性,但它们实际上并没有减少括号数。在大多数情况下,因为它们看起来更类似于函数组合(这将是Haskell。运算符)。

2 个答案:

答案 0 :(得分:10)

$运算符依赖于低约束优先级,事实上,the lowest

由于Clojure,Scheme和Lisp不支持用户定义的优先级或固定性,因此不可能像Haskell那样定义这些语法结构。

答案 1 :(得分:3)

我不认为这样的函数存在,但是对于宏,你可能会创建一个。如果没有读取器宏(在Clojure中不存在),你永远不会摆脱最外面的一对括号,但是你可以消除所有内部的括号。我刚刚学会了如何创建宏,所以如果我以后能够得到足够的勇气,我会给你一个机会。 :)

使用支持Clojure语法的编辑器大大提高了可读性。我个人使用emacs,SLIME等,我甚至都没有真正看到括号(尤其是Paredit)。