Asa*_*bal 10 if-statement clojure
这应该是一个非常微不足道的问题.我是Clojure的新手,并且根据以下内容编写了这个if-then-else:http://clojure.org/special_forms#Special%20Forms--%28if%20test%20then%20else?%29
但是,我不断收到此错误:
java.lang.Exception:if的参数太多(NO_SOURCE_FILE:424)
// This code has infinite recursion bugs; but it should compile!
(defn sumdown [sum x]
(
if (foo x)
(do
(recur (+ sum x) (dec x))
)
else do(
(recur (+ sum x) (dec x))
)
)
)
Run Code Online (Sandbox Code Playgroud)
jac*_*ven 15
在模板中:
(if test then else?)
Run Code Online (Sandbox Code Playgroud)
两者then
并else
不能代表关键字,但实际表现.的?
指示else
表达是可选的.
评估测试条件,并根据其值,评估适当的分支表达式并"返回"整个if表达式的值.
例如,这将定义绝对值函数:
(defn abs [x]
(if (< x 0)
(- x)
x))
Run Code Online (Sandbox Code Playgroud)
(defn sumdown [sum x]
(if (foo x)
(recur (+ sum x) (dec x))
(recur (+ sum x) (dec x))))
Run Code Online (Sandbox Code Playgroud)
这是编写此代码的惯用方法.我推荐一个文本编辑器/ IDE,它基本支持编辑Lisp源代码(paren/bracket/brace匹配).
归档时间: |
|
查看次数: |
17427 次 |
最近记录: |