Lisp的缩进方式(基于Cirru)

2020-12-08 13:41:42

基于缩进的语法,人们可能会喜欢它,人们可能会讨厌它。我无法控制。我的眼睛更喜欢阅读缩进,因此我认为这对我来说是更好的工具。 Lisp选择括号来表示其语法树。我想说基于缩进的语法也可以做到这一点。

回购协议运行商基于Cirru的缩进规则实施了Clojure启发式脚本语言。这里有几个例子...

cond(> a 1)(echo大于1")(< a 1)(echo" |小于1")true(echo" | just 1")

基于缩进的语法足以表达S-Expressions。初学者可能会发现,初学者来到Lisp的世界时,其括号要少得多,因此学习和编写起来容易得多。

好。它与lisp非常相似,只是在此示例中图像包含更多项。

对于这种情况,Cirru提出了$语法,该语法来自Haskell。 $之后的部分被标记为表达式,因此此示例更加清晰,没有括号:

另一个极端情况是,当列表和文字混合在表达式中时,基于缩进的语法可能很奇怪,因为

您可能会发现(:fin)多了一对括号,这是不正确的。 为了使该结构有用,Cirru提出了另一种用于提取列表的语法,即逗号,用于提取: 您担心的一件事是Lisp具有Macros。 我正在使用Clojure,因此我将其与Clojure进行了比较: 好吧,Clojure中的语法比我上面提到的更多,在Racket或其他方言中甚至更多。 我只是说基于缩进的语法可以表达这一点,尽管可能不太优雅。 我个人认为带有缩进的Lisp对初学者更友好。 人们使用易于维护缩进的简单编辑器(如Python)编写代码。 他们不必学习EMACS来平衡括号。 还有,谁会说CoffeeScript在基于缩进的语法中具有学习曲线?