相关疑难解决方法(0)

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

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

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

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

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

谢谢大家的答案!

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

lisp scheme common-lisp

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

将函数作为参数传递 - lambda表达式错误?

我正在尝试创建一个接受列表和函数作为参数的函数,并将该函数应用于List中的每个元素.这是我的尝试:

(defun filter(fn L)
  (if (eq 0 (length L))
      (print "list empty")
      (print (mapcar (lambda (n) (#'fn n)) L))))
(print (filter #'evenp '(1 2 2 3 4)))
Run Code Online (Sandbox Code Playgroud)

这是第二次尝试:

(defvar R nil)
(defun filter(fn L)
  (if (eq 0 (length L))
      nil
      (cons (R (funcall fn (car L)) filter(fn (cdr L))))))
(print(filter #'evenp '(1 2 2 3 4)))
Run Code Online (Sandbox Code Playgroud)

但对于一些简单的混乱和无法解释的原因,我得到第一个错误:

#'FN should be lambda expression.
Run Code Online (Sandbox Code Playgroud)

这是第二个:

Undefined function R
Run Code Online (Sandbox Code Playgroud)

我尝试了很多东西但到目前为止还没有任何工作.

编辑::感谢您的帮助到目前为止.这个:

(defun filter(fn L)
  (if (eq 0 (length L))
      (print "list empty")
      (remove-if-not …
Run Code Online (Sandbox Code Playgroud)

lisp functional-programming function common-lisp parameter-passing

1
推荐指数
1
解决办法
447
查看次数

Lisp,指令在 defun 中不起作用

我正在尝试制作一个将中缀输入更改为前缀的函数,例如:(x + 1)作为输入输出为(+ x 1).

所以这是我目前的代码:

(setq x '(Y + 1))
(if (listp x ) (list (second x) (first x) (first (last x))) x)
Run Code Online (Sandbox Code Playgroud)

所以(+ Y 1)如果我输入一个列表它会返回,如果它不是一个列表则返回用户输入。

但是,问题是我无法在函数中使用此代码:

(defun prefixToInfix (x)(
   (if (listp x ) (list (second x) (first x) (first (last x))) x)
   )
 )
Run Code Online (Sandbox Code Playgroud)

该函数确实已创建,但是当我调用它时

(prefixtoinfix '(Y + 1))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

Error: Illegal function object: (IF (LISTP X) (LIST # # #) X).
[condition type: TYPE-ERROR]
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我的 if 语句在主程序中有效,但当我从我的函数中运行它时却没有。

lisp common-lisp syntax-error

0
推荐指数
1
解决办法
369
查看次数