|
|
1
7
在
它试图执行(作为函数调用)整个
注意,缩进样式是非标准的。你不应该把结束语放在他们自己的行上。和
|
|
|
2
4
我想其他的答案是忽略了房间里的大象:你为什么这么做?你的代码中有很多东西让我担心你通过学习clojure走上了错误的道路:
学习clojure的api的最好方法是通过repl。您应该设置您的环境,无论是vim、emacs还是ide,这样您就可以轻松地在文本文件中的静态代码和交互式repl之间来回移动。 Here is a good breakdown of a number of Clojure IDEs 。 现在,就您的代码而言,需要记住一些事情。首先,几乎没有一个好的理由使用eval。如果你发现自己在做这件事,问问自己是否真的有必要。其次,请记住,clojure是一种函数式语言,通常不需要使用“do”宏集。“do”宏在需要产生副作用时非常有用(在您的示例中,副作用是println to*out*)最后,还应该避免使用全局变量。如果确实需要使用vars,则应考虑使用bindings宏将vars本地绑定到线程,使其具有不可变的值,这样就不会出现并发问题。 我绝对建议您花点时间学习编程clojure,或者再深入了解一下lisp,以便真正理解在您考虑如何编程以有效利用clojure时所必需的转变。你在这里的小示例让我觉得你好像在用clojure编写命令代码,这根本不起作用。 |
|
|
3
1
布赖恩已经回答了你的问题,所以我只想给你一些关于let表单的通用指针:
|