标签: lisp

什么是Lisp图像?

基本上,我想知道Lisp图像是什么?它是包含Lisp解释器和一个或多个程序的内存片段还是什么?

lisp common-lisp

24
推荐指数
3
解决办法
4655
查看次数

如何让我的大脑进入"lisp模式?"

我的教授告诉我们,我们可以为下一个编程任务选择一种编程语言.我一直想尝试一种功能语言,所以我想我会尝试使用clojure.问题是我理解了语法并理解了基本概念,但是我遇到了一些问题,让我在脑海中"点击".有人有建议吗?或者我可能选错了语言来开始函数式编程?

lisp functional-programming clojure

24
推荐指数
4
解决办法
1720
查看次数

Lisp风格:setq与setf

Peter Norvig 在第50页的"人工智能编程范式"中提到了特异性和一致性之间的权衡以及选择使用setq或setf将变量更新为值时的权衡.您有什么推荐的吗?您是否遇到过重要性超出可读性的情况?

lisp common-lisp

24
推荐指数
3
解决办法
1万
查看次数

为什么Lisp中的消耗很慢?

我在"On Lisp"一书中读到,应该避免cons在扩展宏的主体中过度使用.为什么被cons认为是效率低下的操作?Lisp不与cons细胞共享结构吗?

lisp common-lisp

24
推荐指数
3
解决办法
3063
查看次数

CLO for Clojure?

是否存在Clojure的CLOS(Common Lisp Object System)之类的东西?

lisp oop clojure common-lisp clos

24
推荐指数
3
解决办法
4396
查看次数

约翰麦卡锡对*色情编程*的意思是什么?

Lisp历史中,麦卡锡写道:

翻译的出乎意料的外表倾向于冻结语言的形式,并且一些决定对于"递归函数......"而言相当轻松,后来证明是不幸的.这些包括用于条件表达式的COND表示法,其导致不必要的括号深度,并且使用数字零来表示空列表NIL和真值false.除了鼓励色情编程外,对地址0进行特殊解释也给后来的所有实施带来了困难.

他在说什么?

lisp history terminology

24
推荐指数
5
解决办法
1779
查看次数

Common Lisp中的值函数

在Common Lisp中的值是否只是用于将多个值打包到一个被调用者解构的列表中的语法糖?我问,因为我认为Common Lisp支持"true"多值返回,而不是像其他语言一样返回元组或列表,例如python.有人告诉我,这只是语法糖,所以我希望有人能够解释它.为了尝试理解values函数返回的类型,我输入了(type-of (values 1 2 3)),输出是BIT.我在Common Lisp参考中搜索了这个,我在数据类型部分找不到它.此外,任何人都可以共享一些资源,建议如何在Common Lisp中实现值函数?谢谢.

lisp common-lisp

24
推荐指数
2
解决办法
4459
查看次数

如何遍历Common Lisp中的目录?

我在达尔文上使用OpenMCL,我想做的事情如下:

(loop for f in (directory "somedir")
  collect (some-per-file-processing f))
Run Code Online (Sandbox Code Playgroud)

但我无法directory返回除了以外的任何东西NIL,我似乎无法在网上找到任何好的解释(除了"每个系统的不同").

有什么指针吗?

lisp filesystems directory common-lisp

23
推荐指数
3
解决办法
1万
查看次数

方案宏有哪些优点?

为什么有人会更喜欢Scheme宏而不是Common Lisp宏(我真的也想知道,我不是想成为一个巨魔)?

我作为Lisp newb的经验是,Common Lisp风格的宏比Scheme的宏更容易学习.我还没有看到Scheme的宏有任何优点,但当然这并不意味着它们不存在.

我知道Scheme宏是"hygenic",但我仍然不相信这是值得的额外复杂性.在另一方面,虽然,有很明显人是相信,这是必要的,否则就不会有Common Lisp中的宏方案的实现.

长话短说,有人可以向我捍卫Scheme的宏吗?

lisp macros scheme common-lisp

23
推荐指数
2
解决办法
4823
查看次数

如何以纯粹的功能方式实现观察者设计模式?

假设我想使用OO编程语言实现事件总线.我可以这样做(伪代码):

class EventBus

    listeners = []

    public register(listener):
        listeners.add(listener)

    public unregister(listener):
        listeners.remove(listener)

    public fireEvent(event):
        for (listener in listeners):
            listener.on(event)
Run Code Online (Sandbox Code Playgroud)

这实际上是观察者模式,但用于应用程序的事件驱动控制流.

您将如何使用函数式编程语言(例如lisp风格之一)实现此模式?

我问这个是因为如果一个人不使用对象,人们仍然需要某种状态来维护所有听众的集合.此外,由于听众集合随着时间的推移而变化,因此无法创建纯粹的功能解决方案,对吧?

lisp scheme functional-programming clojure observer-pattern

23
推荐指数
4
解决办法
5635
查看次数