欢迎!请查阅关于页面以了解更多关于这个网站的信息。
嗨。由于我在学习Clojure,我决定为我编写的阶乘代码绘制一个表达式树。
然而,使用<强>(2)强> defn或<强>(1)强> def和fn似乎无法生成漂亮的表达式树。
因此,我想出了<强>(3)强> mydef,它揭示了函数及其参数的结构。以表达式树的形式绘制,这很有意义。
我的问题是1) <强>(1)强>和<强>(2)强>真的更有意义吗?2) 为什么函数定义不是写成<强>(3)强> mydef的形式?
以下链接是图表,如果有人想使用的话 https://drive.google.com/file/d/1hUnifN8GM5wGr9r8lE1jgCPqU4zH8iYE/view?usp=sharing
顺便说一句,Clojure支持在同一函数定义中定义多个arity,例如
(defn foo ([] "hi") ([x] (str "hi " x)))
defn是一种特殊形式,但实际上是一个宏,基本是定义自定义语法。我不确定是否有任何方法可以赢得“最佳语法”的胜利——这就是为什么我们有成百上千种编程语言。 :)