小编Rai*_*wig的帖子

为什么这个函数每次都返回一个不同的值?

有人可以解释以下行为吗?具体来说,为什么函数每次都返回一个不同的列表?为什么每次调用函数时都没有some-list初始化'(0 0 0)

(defun foo ()
  (let ((some-list '(0 0 0)))
    (incf (car some-list))
    some-list))
Run Code Online (Sandbox Code Playgroud)

输出:

> (foo)
(1 0 0)
> (foo)
(2 0 0)
> (foo)
(3 0 0)
> (foo)
(4 0 0)
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:

另外,假设我希望'(1 0 0)每次输出函数,推荐的实现此函数的方法是什么?

lisp scope common-lisp literals

19
推荐指数
3
解决办法
825
查看次数

如何在Lisp中记忆递归函数?

我是Lisp的初学者.我正在尝试记忆递归函数来计算Collat​​z序列中的项数(对于Project Euler中的问题14 ).我的代码是:

(defun collatz-steps (n)
  (if (= 1 n) 0
       (if (evenp n) 
           (1+ (collatz-steps (/ n 2)))
           (1+ (collatz-steps (1+ (* 3 n)))))))

(defun p14 ()
  (defvar m-collatz-steps (memoize #'collatz-steps))
  (let 
      ((maxsteps (funcall m-collatz-steps 2))
       (n 2)
       (steps))
    (loop for i from 1 to 1000000
          do 
          (setq steps (funcall m-collatz-steps i))
          (cond 
            ((> steps maxsteps) 
             (setq maxsteps steps)
             (setq n i))
            (t ())))
    n))


(defun memoize (fn)
  (let ((cache (make-hash-table :test #'equal)))
    #'(lambda (&rest …
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp memoization

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

阅读宏:你用它们做什么?

我试图了解Lisp的部分内容,到目前为止我还没有用过很多东西.读宏已经引起了我的注意.没有一个巨大的关于他们的信息的量使用,它会帮看看什么人跟他们做,既能得到它们是如何工作的例子,也看什么类型的问题可以与他们接近.接下来,是否有任何指导方针可以了解读取宏的优缺点是什么?

lisp reader-macro

18
推荐指数
2
解决办法
2579
查看次数

在SBCL中使用步进器的一个简单示例

使用LispWorks步进器进行计算非常直观,但我无法在SBCL中找到它.有人可以给我一个如何在REPL中使用SBCL步进器的一些简单函数的分步示例吗?谢谢.

lisp debugging sbcl common-lisp stepper

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

什么是Clojure?

我无法理解Clojure 中reify函数的用法.它在clojure中用于什么?

你能提供一些例子吗?

clojure

15
推荐指数
2
解决办法
5247
查看次数

Lisp简单的问题

我有一些不理解来自gnu clisp的动作假设,我有一些代码 (let ((x "Hi!"))(print x)).如果我从控制台执行它(比如,clisp fileName.lisp),我明白了

嗨!

但是,当我从解释器执行它时,我会看到这个文本两次.为什么?

请帮帮我.

lisp printing clisp let

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

服务器端的Common Lisp或Scheme?

我想知道是否有一些函数式语言用于Web开发,哪些是最有用的并且支持这个目标?

scheme functional-programming common-lisp

14
推荐指数
3
解决办法
3015
查看次数

哪个标准Common Lisp宏/特殊形式建立名为nil的隐式块?

DO,PROG等在它们的身体周围建立一个名为nil的隐式块.CLHS不提供执行此操作的所有标准宏的列表.到目前为止我所知道的:

DO
DO*
PROG
PROG*
LOOP
DOLIST
DOTIMES
DO-SYMBOLS
DO-ALL-SYMBOLS
DO-EXTERNAL-SYMBOLS
Run Code Online (Sandbox Code Playgroud)

是否有任何其他标准CL宏或特殊形式建立隐式nil块?

block common-lisp

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

将项目添加到列表末尾的"缺点"是什么?

将项目添加到列表末尾的典型方法是什么?

我有一个列表(1 2 3)并想要添加4(其中4是评估结果(+ 2 2))

(setf nlist '(1 2 3))  
(append nlist (+ 2 2))  
Run Code Online (Sandbox Code Playgroud)

这表示append需要一个列表,而不是一个数字.我怎么做到这一点?

lisp list append common-lisp

14
推荐指数
4
解决办法
3万
查看次数

我可以在Clisp中保存源文件吗?

我是初学程序员,正在浏览"Land of Lisp"这本书.

我一直在用REPL输入书中的例子.是否可以将我当前的程序保存为.lisp文件,以便我可以加载它并在以后继续处理它?我知道我可以在文本编辑器中创建.lisp文件并加载它们,但我很乐意在全屏模式下使用REPL来做示例.

lisp clisp common-lisp land-of-lisp

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