LISP可以用十个原语构建:原语是:atom,quote,eq,car,cdr,cons,cond,lambda,label,apply.
显然,这些等同于欧氏几何的5个公理. http://hyperpolyglot.wikidot.com/lisp
谁能解释它们是如何相同的?
在Common LISP中我可以做到:
(setf a1 'a)
(setf 1a 'b)
Run Code Online (Sandbox Code Playgroud)
在clojure中我可以做第一个(忽略setf和def工作不同的事实)
(def a1 'a)
Run Code Online (Sandbox Code Playgroud)
但是第二次我得到了一个错误
(def 1a 'b)
java.lang.NumberFormatException: Invalid number: 1a
Run Code Online (Sandbox Code Playgroud)
Clojure刚刚从Java继承了这个限制,还是故意的?(即你不能拥有带有这种风格的Java的类名,变量或方法名称 - 所以我认为它刚刚进行过.)
我的代码失败了ClassNotFoundException.
我可以看到包含该类的jar文件肯定在命令提示符执行的类路径中.
有没有办法从JVM转储类路径上的类列表?(理想情况下是一些Java代码).
(我不想在目录中看到类,我想查看加载到JVM中的列表).
就简洁的总结而言 - 对Monad 的这种描述似乎获胜- 将它们描述为“不纯计算的类型”。
对 comonad 的等效简洁(一句话)描述是什么?
想象一下以下函数在Clojure中给出一个无限懒惰的fibonacci序列:
(def fib-seq
(concat
[0 1]
((fn rfib [a b]
(lazy-cons (+ a b) (rfib b (+ a b)))) 0 1)))
user> (take 20 fib-seq)
(0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181)
Run Code Online (Sandbox Code Playgroud)
假设
我的问题是 - 上面函数的哪个部分是'codata'.这是匿名函数吗?它是懒惰的序列吗?
在Clojure中,我有四个原语来管理并发场景
我的问题是 - Scala中是否有成熟的等价物?
假设 - 我将假设:
我知道函数式编程有几个定义.我认为这是一个模糊的类别.我的个人定义与" 参考透明度 " 接近.
这个问题不是'函数式编程的定义是什么?' .假设我们所知道的是函数式编程是一些不同的想法,包含一些不明确的界限.
现在,相当惊人的书籍计算机程序结构和解释 包含以下对函数式编程一词的引用.
正如我们在本书前两章所做的那样,不使用赋值的编程因此被称为函数式编程.
对我来说这看起来很奇怪.
我的问题是:在没有赋值的情况下编程可以在函数式编程的定义中考虑吗?
我想要一个将填充此地图内容的函数:
{:1 "first" :2 "second" :3 "third" :4 "fourth" ... :100 "one-hundredth" ...}
Run Code Online (Sandbox Code Playgroud)
所以我可以做类似的事情
(println "This is the " (:3 {... :3 "third" ...}) " item in the sequence")
> This is the third item in the sequence
Run Code Online (Sandbox Code Playgroud)
是否有现有的Clojure库可以做到这一点?
(如果有更好的方法来描述这种功能 - 请告诉我)
我正在使用以下内容:
(defn dollars [input] (str "$" (format "%.2f" input)))
Run Code Online (Sandbox Code Playgroud)
(这不做逗号)
但我想一定有一个使用的方法pprint/cl-format。
我的问题是:如何在 Clojure 中惯用地打印货币?
传统上,人们将Web应用程序视为MVC - 它假设是面向对象的上下文.
函数式编程批评了这一点 - 并提供了一个使用高阶函数和不可变数据结构的模型.
我的问题是:你如何解释像Ring和Yesod这样的纯功能网络服务器不是MVC?
model-view-controller haskell functional-programming clojure yesod