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是一种特殊形式,但实际上是一个宏,基本是定义自定义语法。我不确定是否有任何方法可以赢得“最佳语法”的胜利——这就是为什么我们有成百上千种编程语言。 :)

...