标签: lisp

什么是最令人印象深刻的Lisp应用程序?

我知道这是主观的,但仍然可以提供一些用Lisp编写的严肃应用程序列表(可能与它的Lisp一起)?

lisp

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

Clojure中快速素数生成

我一直在努力解决Clojure中的Project Euler问题,以便变得更好,而且我已经遇到了几次素数.我的问题是它只是花了太长时间.我希望有人可以帮我找到一种以Clojure-y方式做到这一点的有效方法.

当我拳头做到这一点时,我粗暴地强迫它.这很容易做到.但是计算10001个素数在Xeon 2.33GHz上用了2分钟,对规则来说太长了,一般来说太长了.这是算法:

(defn next-prime-slow
    "Find the next prime number, checking against our already existing list"
    ([sofar guess]
        (if (not-any? #(zero? (mod guess %)) sofar)
            guess                         ; Then we have a prime
            (recur sofar (+ guess 2)))))  ; Try again                               

(defn find-primes-slow
    "Finds prime numbers, slowly"
    ([]
        (find-primes-slow 10001 [2 3]))   ; How many we need, initial prime seeds
    ([needed sofar]
        (if (<= needed (count sofar))
            sofar                         ; Found enough, we're done
            (recur needed (concat sofar [(next-prime-slow …
Run Code Online (Sandbox Code Playgroud)

lisp primes clojure

47
推荐指数
5
解决办法
1万
查看次数

我可以将Common Lisp用于SICP,还是Scheme是唯一的选择?

另外,即使我可以使用Common Lisp,我应该吗?方案更好吗?

lisp scheme common-lisp sicp

47
推荐指数
4
解决办法
9839
查看次数

构建和部署Clojure应用程序的最佳实践:好的教程?

我是Clojure的新手,我开始尝试构建应用程序.

到目前为止,我所看到的有关编译Clojure程序的教程的所有内容都涉及交互性.例如,"加载REPL并键入(加载文件"this-or-that")以运行.这很好,但这还不够.

我已经习惯了C语言或Delphi等语言的编辑 - 编译 - 运行习惯,我本能地驱动编辑,然后点击"Mx编译".

问题是"lein uberjar",我理解相当于"make",即使对于一个你好的世界也很难执行.因此,我将不得不弄清楚这种"交互式开发"的东西是如何工作的,停止使用像它快速制作的超级发布,并且只在一天结束时保存它.

我在构建时注意到的另一件事(使用lein uberjar)是我正在处理的小GUI应用程序在编译过程中弹出帧,就像它们在编译时执行一样.这对我来说似乎有点违反直觉; 它并不像我想象的那样类似于"制造".

我知道Lisp的开发方式是在REPL中交互式工作,我并不想改变它:我想适应这种生活方式.不幸的是,我没有看到关于如何这样做的文档形式.例如,如何重置机器的当前状态.只是继续编译各个片段而不能进行某种重置似乎有点麻烦.

我在Clojure(和Lisp)上看到的大多数教程似乎都专注于在REPL中进行黑客攻击.应用程序部署的最佳实践对我来说仍然是一个谜.我的用户只是用户; 他们不会成为将文件加载到REPL的开发人员.

所以这是我的问题:任何有关构建Clojure应用程序的整个过程(包括部署)的良好信息或教程的资源?

(注意:我已经安装并运行了所有先决条件(例如Emacs,Slime,Leiningen等),所以这不是一个问题).

lisp deployment clojure leiningen

47
推荐指数
2
解决办法
7656
查看次数

Lisp中的setq和defvar

我看到实用的Common Lisp使用(defvar *db* nil)设立一个全局变量.是否可以setq用于同一目的?

使用defvarvs. 的优点/缺点是setq什么?

lisp variables common-lisp variable-declaration assign

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

ECMAScript真的是Lisp的一种方言吗?

我的一位朋友提请我注意第四届欧洲Lisp研讨会的欢迎辞:

...任何Lisp方言的实现和应用,包括Common Lisp,Scheme,Emacs Lisp,AutoLisp,ISLISP,Dylan,Clojure,ACL2,ECMAScript,......

然后询问ECMAScript是否真的是Lisp的方言.真的可以这样考虑吗?为什么?

是否有明确定义的明确标准来帮助我们检测语言是否是Lisp的方言?或者是一种非常松散的方言(在这种情况下,我们可以将Python,Perl,Haskell等添加到Lisp方言列表中吗?)

javascript lisp ecma262

47
推荐指数
7
解决办法
9272
查看次数

LISP宏可以走多远?

我已经阅读了很多内容,LISP可以动态地重新定义语法,大概是宏.我好奇这到底有多远?你能重新定义语言结构,以至于它的边界成为另一种语言的编译器吗?例如,您是否可以将LISP的功能性质更改为更面向对象的语法和语义,或许可以说语法更接近像Ruby这样的东西?

特别是,是否可以使用宏来摆脱括号地狱?我已经学会了足够的(Emacs-)LISP来使用我自己的微功能定制Emacs,但我很好奇宏可以在定制语言方面走多远.

lisp macros

45
推荐指数
9
解决办法
6448
查看次数

Slime for Scheme最接近的是什么?

我在Common Lisp中完成了大部分的开发工作,但是有些时候我想切换到Scheme(在Small Pieces中读取Lisp,当我想要使用continuation时,或者当我想在Gauche中执行一些脚本编写时,例).在这种情况下,我不舒服的主要原因是我没有史莱姆(是的,你可以称我为瘾君子).

Scheme最接近史莱姆的是什么?具体来说,我最感兴趣的是:

  • Emacs集成(这一点很明显;))
  • 体面的选项卡完成(理想情况下,cwcc TAB应扩展为call-with-current-continuation).它甚至可以是基于符号表的(即,它不必注意我在a let中定义的函数).
  • 迷你缓冲区中的函数参数提示(如果我已键入(map |)(光标位置由|)表示),我想(map predicate . lists)在迷你缓冲区中看到
  • 将表格发送给口译员
  • 与调试器集成.

我已经通过降低重要性来命令这些功能.

我的Scheme实现选择是:

  • 的MzScheme
  • 的Ikarus
  • 左岸
  • 中的bigloo

如果它至少与它们一起工作会很棒.

lisp emacs scheme common-lisp slime

44
推荐指数
7
解决办法
1万
查看次数

我为什么要在Clojure中使用'apply'?

这就是Rich Hickey在其中一篇博文中所说的,但我不明白使用apply的动机.请帮忙.

Clojure和CL之间的一个很大区别是Clojure是一个Lisp-1,因此不需要funcall,apply仅用于将函数应用于运行时定义的参数集合.因此,(apply f [i])可以写成(fi).

另外,"Clojure是Lisp-1"是什么意思,不需要funcall?我从未在CL编程.

谢谢

lisp clojure

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

功能编程:什么是"不正确的列表"?

有人可以解释什么是"不正确的清单"吗?

注意:谢谢大家!你们所有人摇滚!

lisp erlang scheme functional-programming

44
推荐指数
4
解决办法
8950
查看次数