标签: common-lisp

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

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

lisp scheme common-lisp sicp

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

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万
查看次数

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

Emacs Lisp和Common Lisp之间有哪些主要区别?

我想学习lisp语言,因为我的编辑器是emacs,我更喜欢emacs lisp.

任何人都可以给我一些建议来学习lisp,emacs lisp或常见的lisp吗?

这两者之间的主要区别是什么?

emacs elisp common-lisp

41
推荐指数
2
解决办法
1万
查看次数

defvar,defparameter,setf和setq之间有什么区别

我发现了一个类似的问题.

但我不太明白这个解释.

所以我试图使用以下示例运行clisp:

  [1]> (defvar a 5)
  A
  [2]> (+ a 1)
  6
  [3]> (defparameter b 5)
  B
  [4]> (+ b 1)
  6
  [5]> (setf c 5)
  5
  [6]> (+ c 1)
  6
  [7]> (setq d 5)
  5
  [8]> (+ d 1)
  6
  [9]> (let ((a 500)) (+ a 1))
  501
  [10]> (let ((b 500)) (+ b 1))
  501
  [11]> (let ((c 500)) (+ c 1))
  501
  [12]> (let ((d 500)) (+ d 1))
  501
  [13]> 
Run Code Online (Sandbox Code Playgroud)

我发现的完全一样.

我无法弄清楚它们有什么不同?

lisp clisp common-lisp

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

Common Lisp相当于格式函数里面的\ r \n?

基本上,我想做以下事情,只使用Common Lisp而不是Python:

print("Hello world.\r\n")
Run Code Online (Sandbox Code Playgroud)

我可以这样做,但它只输出#\newline字符并跳过#\return:

(format t "Hello world.~%")
Run Code Online (Sandbox Code Playgroud)

我相信我可以使用外部参数完成此操作,如下所示:

(format t "Hello world.~C~%" #\return)
Run Code Online (Sandbox Code Playgroud)

但对我来说似乎很尴尬.当然,我可以以某种方式嵌入#\return到格式字符串中,就像我可以一样#\newline

format newline common-lisp

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

Common Lisp中的动态和词法变量

我正在阅读Peter Seibel撰写的"Practical Common Lisp"一书.

在第6章"变量"部分"词汇变量和闭包"和"动态,又称特殊,变量". http://www.gigamonkeys.com/book/variables.html

我的问题是两个部分中的示例都显示了(让...)如何影响全局变量,并没有真正说明动态和词汇变量之间的区别.

我理解闭包是如何工作的,但我真的不知道在这个例子中让我们如此特别:

(defvar *x* 10)

(defun foo ()
  (format t "Before assignment~18tX: ~d~%" *x*)
  (setf *x* (+ 1 *x*))
  (format t "After assignment~18tX: ~d~%" *x*))


(defun bar ()
  (foo)
  (let ((*x* 20)) (foo))
  (foo))


CL-USER> (foo)
Before assignment X: 10
After assignment  X: 11
NIL


CL-USER> (bar)
Before assignment X: 11
After assignment  X: 12
Before assignment X: 20
After assignment  X: 21
Before assignment X: 12
After assignment  X: 13
NIL
Run Code Online (Sandbox Code Playgroud)

我觉得这里没什么特别的.外FOO …

lisp common-lisp lexical-scope

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

为什么代码为数据?

什么是代码作为数据?我听说它比"code-as-ascii-characters"要好,但为什么呢?我个人认为代码作为数据的哲学实际上有点令人困惑.

我已经涉足了Scheme,但我从来没有真正得到整个代码作为数据的东西,并想知道它究竟是什么意思?

lisp scheme coding-style common-lisp data-structures

37
推荐指数
6
解决办法
8371
查看次数

在Emacs中,这个错误意味着什么?"警告:运行时需要cl包"

我是字节编译模块.它给了我这个警告:

 Warning: cl package required at runtime
Run Code Online (Sandbox Code Playgroud)

为什么这是一个警告?我很清楚我正在使用这个cl包.事实上(require 'cl),模块中有一个声明.

使用这些cl东西有什么问题吗?

如果是,是否有已发布的变通方法列表?我使用的主要内容是mapcandelete-duplicates.

lisp emacs common-lisp

37
推荐指数
3
解决办法
8666
查看次数

Common Lisp是否有任何高级,易于安装的GUI库?

是否有任何良好的跨平台(至少是SBCL和CLISP)易于安装的GUI库?

lisp user-interface common-lisp

36
推荐指数
3
解决办法
6051
查看次数