相关疑难解决方法(0)

Lisp-1和Lisp-2有什么区别?

我试图理解Lisp-1和Lisp-2之间的区别以及它与Clojure的关系,但我仍然不理解.任何人都可以开导我吗?

lisp clojure lisp-2

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

为什么我们需要在Lisp中使用funcall?

为什么我们必须使用funcallCommon Lisp中的高阶函数?例如,为什么我们必须使用:

(defun foo (test-func args)
  (funcall test-func args))
Run Code Online (Sandbox Code Playgroud)

而不是更简单:

(defun bar (test-func args)
  (test-func args))
Run Code Online (Sandbox Code Playgroud)

来自程序背景,我有点惊讶,因为我更习惯的语言(例如Python,C#)不需要区分.特别是,至少在源代码级别,C#编译器将其转换为类似的东西func.invoke().

我看到的唯一问题是,这意味着我们不能再调用全局函数test-func,因为它会被遮蔽,但这不是问题.

lisp common-lisp funcall

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

如何修改Common Lisp中的函数绑定?

以下是您可以在Scheme中执行的操作:

> (define (sum lst acc)
    (if (null? lst)
        acc
        (sum (cdr lst) (+ acc (car lst)))))
> (define sum-original sum)
> (define (sum-debug lst acc)
    (print lst)
    (print acc)
    (sum-original lst acc))
> (sum '(1 2 3) 0)
6
> (set! sum sum-debug)
> (sum '(1 2 3) 0)
(1 2 3)
0
(2 3)
1
(3)
3
()
6
6
> (set! sum sum-original)
> (sum '(1 2 3) 0)
6
Run Code Online (Sandbox Code Playgroud)

如果我在Common Lisp中执行以下操作:

> (defun sum (lst acc) …
Run Code Online (Sandbox Code Playgroud)

lisp variables scheme binding common-lisp

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

标签 统计

lisp ×3

common-lisp ×2

binding ×1

clojure ×1

funcall ×1

lisp-2 ×1

scheme ×1

variables ×1