Common lisp 在一辆出租汽车内拆卸-为什么?
前几天我在读资料来源。它包含了一个使用通道实现未来的示例。DEFUNs是在一个LET中声明的:Common lisp 在一辆出租汽车内拆卸-为什么?,common-lisp,Common Lisp,前几天我在读资料来源。它包含了一个使用通道实现未来的示例。DEFUNs是在一个LET中声明的: 这有什么作用?只是为了提供几个函数可以共享的公共值并保持封装干净吗?您已经回答了您的问题:为一组函数提供共享绑定并保持封装干净 以下是一个简单的例子: 您还可以在此闭包中添加一个函数,其行为取决于方向。这些只是闭包。仅就历史背景而言[] 闭包在一种编程风格中扮演着更为突出的角色 由Abelson和Sussman的经典结构和解释推动 计算机程序设计。闭包是具有局部状态的函数。这个 使用此状态的最简单方法
这有什么作用?只是为了提供几个函数可以共享的公共值并保持封装干净吗?您已经回答了您的问题:为一组函数提供共享绑定并保持封装干净 以下是一个简单的例子:
您还可以在此闭包中添加一个函数,其行为取决于方向。这些只是闭包。仅就历史背景而言[] 闭包在一种编程风格中扮演着更为突出的角色 由Abelson和Sussman的经典结构和解释推动 计算机程序设计。闭包是具有局部状态的函数。这个 使用此状态的最简单方法是在如下情况下: 这两个函数共享一个用作计数器的变量。这个 第一个返回计数器的连续值,第二个返回计数器的连续值 将计数器重置为0。同样的事情也可以通过制作 对全局变量进行计数器运算,但这样可以防止 非故意的引用
引用的那一章是一些非常有趣的阅读。我得买一本《放过兰姆达》!
(let ((some-var some-value))
(defun foo () ... (reference some-var) ... )
(defun bar () ...))
(let ((direction 'down))
(defun toggle-direction ()
(setq direction
(if (eq direction 'up)
'down
'up))))
(toggle-direction) => UP
(toggle-direction) => DOWN
(toggle-direction) => UP
(toggle-direction) => DOWN
(let ((counter 0))
(defun new-id () (incf counter))
(defun reset-id () (setq counter 0)))