请在 2024 Clojure状态调查! 中分享您的想法。

欢迎!请查看关于页面以获得更多关于此功能的信息。

0
语法和读取器
编辑

https://imgur.com/a/X11sBxI

嗨。因为我正在学习Clojure,我决定为我的阶乘代码绘制一个表达式树。

然而,似乎使用 (2) defn 或 (1) def 和 fn 并没有生成一个看起来很棒的表达式树。

所以我提出了 (3) mydef,它可以揭示函数及其参数的结构。以表达式树的形式绘制,这很有意义。

我的问题是
1) (1)(2) 是否实际上更有意义?
2) 为什么函数定义不像 (3) mydef 这样书写?

这里是链接,如有需要可使用
https://drive.google.com/file/d/1hUnifN8GM5wGr9r8lE1jgCPqU4zH8iYE/view?usp=sharing

1 个答案

0

顺便说一句,Clojure支持在同一个函数定义中定义多个arity,例如

(defn foo
   ([] "hi")
   ([x] (str "hi " x)))

defn是一个特殊形式,但以宏的形式实现,基本上是定义自定义语法。我不确定有任何方法可以赢得“最佳语法”——这就是为什么我们有数百种编程语言。 :)

...