在Clojure到场之前,JVM已经有三个Lisp: Kawa , Armed Bear和SISC 。 那些Lisp留下的Clojure填补了什么空隙?
有几个Clojure的Web框架 的Compojure Webjure 变戏法 胡子 还有一些图书馆处理某些网页开发的子任务,比如 活跃的模板 打嗝的呃 通过响应来处理较低级别的内容 ClojureQL持久性(虽然看起来不是非常活跃) 还有数百个Java库被使用。 这里已经讨论了一些方面,其中两个比较了一些 。 我想知道这些框架/组件在成熟度,范围,开发简易性,Django / RoR感觉等方面的比较。
我找不到任何有关如何parsingXML文档和访问元素的信息。 我已经find了两种方法来parsingXML文档 (clojure.zip/xml-zip (clojure.xml/parse file)) 和 (parse-seq file) 但我似乎可以find关于如何处理结果的任何信息? 源文件的引用是关于如何查询结果的zip-query.clj,但是这似乎也丢失了。
最近我已经更多地使用了Lisp和Lispy语言,而且我发现它们非常强大。 我一直在网上阅读的一件事是,在Lisp,Clojure等中编写的好处是你可以在程序运行时编辑你的程序。 也许我错过了什么,但是有什么意义呢? 当然,这可能会节省几秒钟,但所有? 每当我改变我的程序,我就停止它,然后再次启动,这已经好几十年了。 除了节省时间之外,还有一个原因 – 它是什么? 有人能给我一个很好的案例研究,会让我stream口水这个function吗? 🙂 期待stream口水!
我明白,他们是不同的,因为一个工程设置*compile-path*而不是。 不过,我需要帮助他们为什么不同。 let定的绑定创build一个新的作用域,但binding …?
我应该学习哪种Lisp(方言),为什么? CL和Scheme之间的碎片化速度减慢(至less对我来说!)。 所以,请给我“真实的答案”! 我试图阅读function比较,他们似乎陷入了深奥(我不完全理解),像方言是否完全尾recursion,等等。 我希望你们能够(统称)把不透明的差异弄清楚。 我喜欢的东西 良好的库支持,良好的环境和Unicode支持。 我不喜欢的东西 论战。 在开始时有用的function,但干扰长期学习。 更新 我一直在使用MzScheme,一旦我获得了readline支持,我很享受。 我不在Unix上运行GUI,所以对我来说这似乎是一个很好的环境选项。 我也很高兴Clojure在debian上安装了一个易于安装的.deb软件包,所以玩起来容易多了。 这是一个很大的胜利。 尽pipe下面有些相当容易愤怒的敌意,但低进入门槛是一个胜利。 我喜欢被勺子。 在阅读了更多的SICP后 ,我更好地理解了尾recursion的问题。
我在我的clojure程序中使用了许多地图和结构。 将这些转换为defrecords有什么好处(除了性能)?
Clojure有没有命名的观点? 如果是这样,请你提供一个小例子吗?
在这个网站上他们说有10个LISP原语。 原语是: atom, quote, eq, car, cdr, cons, cond, lambda, label, apply 。 http://hyperpolyglot.wikidot.com/lisp#ten-primitives Stevey估计有七(或五)个: Its part of the purity of the idea of LISP: you only need the seven (or is it five?) primitives to build the full machine. http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html 构build一个LISP机器的基元的最小数量是多less(即可以在LISP代码上运行一个eval / value函数的东西)是多less? (他们是哪一个?) (我可以理解你可以没有atom, label and apply )
非常感谢所有美丽的答案! 不能只标记一个是正确的 注意:已经是一个维基 我是function编程的新手,虽然我可以在函数式编程中读取简单的函数,例如计算一个数的阶乘,但是我发现很难读大函数。 部分原因是我认为是因为我无法弄清函数定义中的小块代码,还有一部分原因是我在代码中匹配( )变得困难。 如果有人能通过阅读一些代码,并给我一些关于如何快速解密一些代码的提示,那将是非常好的。 注意:如果我盯着它10分钟,我可以理解这个代码,但是我怀疑这个代码是否用Java编写,这需要我10分钟。 所以,我觉得在Lisp风格的代码中感觉很舒服,我必须更快地做到这一点 注:我知道这是一个主观的问题。 而我在这里并没有寻求任何可以证实的正确答案。 只是评论你如何去读这个代码,将是受欢迎的,非常有帮助 (defn concat ([] (lazy-seq nil)) ([x] (lazy-seq x)) ([xy] (lazy-seq (let [s (seq x)] (if s (if (chunked-seq? s) (chunk-cons (chunk-first s) (concat (chunk-rest s) y)) (cons (first s) (concat (rest s) y))) y)))) ([xy & zs] (let [cat (fn cat [xys zs] […]