标签: lisp

如何使Clojure函数采用可变数量的参数?

我正在学习Clojure,我正在尝试定义一个函数,该函数接受可变数量的参数(一个可变函数)并将它们相加(是的,就像+过程一样).但是,我不知道如何实现这样的功能

我能做的一切是:

(defn sum [n1, n2] (+ n1 n2))

当然,此功能仅需要两个参数和两个参数.请教我如何接受(和处理)未定义数量的参数.

lisp procedure function clojure

77
推荐指数
4
解决办法
4万
查看次数

构建LISP机器需要多少原语?十,七,五?

在这个网站上,他们说有10个LISP原语.原语是:atom, quote, eq, car, cdr, cons, cond, lambda, label, apply.

http://hyperpolyglot.wikidot.com/lisp#ten-primitives

Stevey估计有七个(或五个):

它是LISP概念纯度的一部分:你只需要七个(或五个?)原语来构建整个机器. http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html

构建LISP机器的最小基元数是多少(即可以在LISP代码上运行eval/value函数的东西)?(他们是哪一个?)

(我明白你可以没有生活atom, label and apply)

lisp primitive scheme clojure common-lisp

76
推荐指数
6
解决办法
1万
查看次数

如何使用Lisp或Scheme进行Web编程?

我经常用PHP,Ruby或Perl编写Web应用程序.我正在开始研究Scheme,我想用这种语言尝试一些web项目.但我找不到最适合这种情况的环境.

我正在寻找以下功能:

  • 获取请求参数的简单方法(类似于:get-get #key,get-post #key,get-cookie #key).
  • Mysql访问.
  • HTML表单生成器,处理,验证器等.
  • 用于过滤用户输入数据的助手(类似于htmlentities,用于放入查询的转义变量等).
  • FLOSS.
  • 和GNU/Linux友好.

所以,提前感谢所有回复.

lisp scheme

75
推荐指数
9
解决办法
2万
查看次数

如何阅读精神上的Lisp/Clojure代码

非常感谢所有美丽的答案!不能只标记一个是正确的

注意:已经是wiki

我是函数式编程的新手,虽然我可以在函数式编程中读取简单的函数,例如计算数字的阶乘,但我发现很难阅读大函数.部分原因是因为我无法在函数定义中找出较小的代码块,部分原因是因为我( )在代码中难以匹配.

如果有人能够引导我阅读一些代码并给我一些关于如何快速破译某些代码的提示,那将是很棒的.

注意:如果我盯着它看了10分钟,我就能理解这段代码,但我怀疑这段代码是用Java编写的,我需要10分钟.因此,我认为在Lisp样式代码中感觉舒服,我必须更快地完成它

注意:我知道这是一个主观问题.我并不是在寻求任何可证实的正确答案.只是评论你如何阅读这些代码,欢迎并非常有帮助

(defn concat
  ([] (lazy-seq nil))
  ([x] (lazy-seq x))
  ([x y]
    (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))))
  ([x y & zs]
     (let [cat (fn cat [xys zs]
                 (lazy-seq
                   (let [xys (seq xys)]
                     (if xys
                       (if (chunked-seq? xys)
                         (chunk-cons (chunk-first xys)
                                     (cat (chunk-rest xys) zs))
                         (cons (first xys) (cat (rest xys) zs)))
                       (when zs …
Run Code Online (Sandbox Code Playgroud)

lisp clojure

73
推荐指数
3
解决办法
8463
查看次数

Scheme和Common Lisp之间有什么实际区别?(或任何其他两种Lisp方言)

注意:我不是在问哪个学习,哪个更好,或者类似的东西.

我拿起SICP的免费版本,因为我觉得阅读会很好(我听说过很好的东西,而且我对这种编程方面很感兴趣).

我知道Scheme是Lisp的一种方言,我想知道:Scheme和Common Lisp之间的实际区别是什么?

似乎有很多关于'CL有一个更大的stdlib ...方案对现实世界的编程不好......'但实际上并没有说'这是因为CL就是这个/有这个'.

lisp scheme common-lisp sicp racket

71
推荐指数
3
解决办法
2万
查看次数

如何比较两个函数的等价性,如(λx.2*x)==(λx.x+ x)?

有没有办法比较两个函数的相等性?例如,(?x.2*x) == (?x.x+x)应该返回true,因为那些显然是等价的.

lisp lambda haskell functional-programming clojure

71
推荐指数
4
解决办法
2万
查看次数

我应该学习哪个Lisp?

我应该学习哪种Lisp(方言),为什么?

CL和Scheme之间的碎片减缓了吸收(至少对我而言!).

所以,请给我"真实答案"!

我试图阅读特征比较,他们似乎陷入了esoterica(我不完全理解),比如方言是否完全是尾递归等等.我希望你们(共同)能够明确区分不透明的差异.

我喜欢的事

良好的库支持,良好的环境和Unicode支持.

我不喜欢的事情

论战.功能在开始时很有用,但会干扰长期学习.


更新

  1. 我一直在使用MzScheme,一旦得到readline支持,我就会很享受.我没有在Unix上运行GUI,所以它对我来说似乎是一个很好的环境选择.

  2. 我也很高兴Clojure在debian上有一个易于安装的.deb软件包,所以它更容易玩.这是一个很大的胜利.尽管下面的一些相当容易激怒的敌意,低进入门槛是一个胜利.我喜欢被舀勺.

  3. 在阅读了更多SICP之后,我确实更了解尾递归的问题.

lisp scheme clojure

69
推荐指数
9
解决办法
2万
查看次数

为什么Lisp社区如此分散?

首先,不仅有两种主要的语言方言(Common Lisp和Scheme),而且每种方言都有许多单独的实现.例如,Chicken Scheme,Bigloo等......每个都有细微差别.

从现代的角度来看,这很奇怪,因为现在的语言往往具有明确的实现/规范.想想Java,C#,Python,Ruby等,每个网站都有一个单一的权威网站,您可以访问API文档,下载等.当然,Lisp早于所有这些语言.但话说回来,甚至C/C++都是标准化的(或多或少).

由于Lisp的年龄,这个社区的碎片化是什么?或者也许不同的实现/方言旨在解决不同的问题?我理解为什么Lisp永远不会像在一个明确的实现中成长的语言那样团结一致,这是有充分理由的,但是在这一点上,Lisp社区不应该向这个方向发展吗?

lisp scheme common-lisp

69
推荐指数
5
解决办法
8206
查看次数

Lisp灵活性的实际例子?

有人试图向我出售Lisp,作为一种超级强大的语言,可以做任何事情,然后一些.

是否有Lisp功能的实用代码示例?
(最好与用常规语言编码的等效逻辑一起使用.)

lisp homoiconicity

67
推荐指数
13
解决办法
1万
查看次数

为什么要夸大其他JVM Lisps:Kawa,Armed Bear还是SISC?

在Clojure到达现场之前,JVM已经有三个Lisps:Kawa,Armed BearSISC.

那些Lisps留下的Clojure填补了什么空白?

lisp jvm clojure kawa

66
推荐指数
8
解决办法
1万
查看次数