相关疑难解决方法(0)

学习LISP的最佳方法是什么?

我已经用Python,PHP,Java和C编程了几年或几年,我刚读完黑客和画家,所以我很乐意尝试一下LISP!

我理解它与我所知道的完全不同,并且这并不容易.我想(如果我错了,请纠正我)LISP的社区和发展方式会减少.所以我的问题是:学习LISP的最佳方法是什么?

我不介意买书或投入一些时间.我只是不想浪费它.

"最终"的想法是使用LISP进行网页开发,我知道这不是那么常见所以......我知道在选择第一本书或教程之前计划我的学习是很好的,并花费大量时间在可能没有的东西上是最好的方式!

谢谢大家的答案!

编辑:我阅读Practical Common Lisp并且:...长,有点,有趣并且肯定让我在Lisp中滚动,之后我读了这个小阴谋家,这对我的整体编程很简单,有趣且非常好.因此,我的建议是首先阅读小阴谋,然后(它需要几个小时而且值得)如果你决定使用lisp(或方案或任何方言)不是你想要的东西,你仍然会非常有趣关于递归的新思路!

lisp scheme common-lisp

165
推荐指数
14
解决办法
5万
查看次数

为什么#'在Common Lisp中的lambda之前使用?

我想知道为什么我看到的大多数Common Lisp代码都有类似的东西

(mapcar #'(lambda (x) (* x x)) '(1 2 3))

而不仅仅是

(mapcar (lambda (x) (* x x)) '(1 2 3)),

这似乎也有效.我开始学习Common Lisp,并且在Scheme中有一些背景,这引起了我的兴趣.

编辑:我知道您需要带有函数名称的#',因为它们与变量位于不同的命名空间中.我的问题只是在lambda之前的#',因为lambda已经返回一个函数对象(我认为).#' - 由于宏扩展而减少lambdas的工作只会让它变得更有趣......

common-lisp

35
推荐指数
2
解决办法
4212
查看次数

普通的lisp中的#'

在Practical Common Lisp一书的第3章中,有一个类似SQL的选择和函数的例子.这是它的简化版本:

(defun where (x) 
   #'(lambda (item)
     (> item x)))
Run Code Online (Sandbox Code Playgroud)

它像这样使用:

(remove-if-not (where 2) (list 1 2 3 4))
Run Code Online (Sandbox Code Playgroud)

在本书的前面部分解释说,#'序列用于表示它后跟一个函数名,而不是一个需要评估的变量.我不明白为什么这里需要它.我尝试在where没有它的情况下实现该功能,它也可以工作:

(defun where (x) 
   (lambda (item)
     (> item x)))
Run Code Online (Sandbox Code Playgroud)

我试着谷歌搜索它,并且,正如你可以想象的那样,通过这样一系列的角色,它不是一个非常有成效的搜索.我不知道这件事的名字.在上面的代码中是否有任何特殊原因需要它?

common-lisp quote

14
推荐指数
2
解决办法
6538
查看次数

标签 统计

common-lisp ×3

lisp ×1

quote ×1

scheme ×1