欢迎!请查看关于页面以获得更多关于此功能的信息。
嗨。因为我正在学习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是一个特殊形式,但以宏的形式实现,基本上是定义自定义语法。我不确定有任何方法可以赢得“最佳语法”——这就是为什么我们有数百种编程语言。 :)