(loop for a in '(1 2 3 4 5) for b in '(a b c) collect (list a b)) ;; Evaluates to: ((1 a) (2 b) (3 c)) 可以组合其他确定循环是否应该继续的子句: (loop for a in '(1 2 3 4 5 6 7) while (< a 4) collect a) ;; Evaluates to: (1 2 3) (loop for a in '...
但是,Common Lisp的形参列表也给了你更灵活的方式将函数调用实参映射到函数形参。除了必要形参以外,一个函数还可以有可选形参,或者也可以用单一形参绑定到含有任意多个额外参数的列表上。最后,参数还可以通过关键字而不是位置来映射到形参上。这样,Common Lisp的形参列表对于几种常见的编码问题提供了一种便利的解决方案。
类型在 Common Lisp 里不是对象。举例来说,没有对象对应到integer这个类型。我们像是从type-of函数里所获得的,以及作为传给像是typep函数的参数,不是一个类型,而是一个类型标识符 (type specifier)。 一个类型标识符是一个类型的名称。最简单的类型标识符是像是integer的符号。这些符号形成了 Common Lisp 里的...
Common Lisp中的素数 好吧,我只是全新的Common Lisp编程语言,我已经从昨天开始自己学习这种语言,这也是出于兴趣.现在当我遇到函数和循环时,在了解它们之后我开始开发Prime数字Common Lisp中的问题.我的代码如下: (defun prime (num) (setq c 1) (setq a 2) (loop (setq a (+ 1 a)) (if (= (mod ...
(loop for i from 0 to 9 do (print (fibonacci i))) 上述代码首先定义了一个名为fibonacci的递归函数,用于计算指定位置上的斐波那契数值。接着,我们使用loop宏来迭代执行该函数,并打印出结果。这段简洁明了的代码充分展示了Common Lisp的强大功能及其在解决实际问题时的灵活性。
循环宏中的Common Lisp绑定 Sil*_*olo 10 loops common-lisp let dynamic-scope 我想在循环中重新绑定一个特殊变量.现在,通常,这是使用a完成的let.(let ((*read-eval* nil)) (do-something-here)) Run Code Online (Sandbox Code Playgroud) 但由于loop宏有这些好的with条款,我想我可能会在那里这样做....
Lisp本身是由大量函数组成的。其语言标准中有超过四分之三的名字用于定义函数。所有内置的数据类型纯粹是用操作它们的函数来定义的。甚至连Lisp强大的对象系统也是构建在函数的概念性扩展——广义函数(generic function)之上的,第16章将会介绍它们。 而且,尽管宏对于Lisp风格有着重要的作用,但最终所有实际的功能还是由函...
最后,一个DEFUN的主体可由任意数量的Lisp表达式所构成。它们将在函数被调用时依次求值,而最后一个表达式的值将被作为整个函数的值返回。另外RETURN-FROM特殊操作符可用于从函数的任何位置立即返回,我很快就会谈到它。 第2章里所写的hello-world函数,形式如下: ...
Unlike the loops in nearly every other programming language in use today, theLOOPin Common Lisp can be used as an expression: (let ((doubled (loop for x from 1 to 10 collect (* 2 x))) doubled) ;; ==> (2 4 6 8 10 12 14 16 18 20) (...
common-lisp RETURN子句与RETURN形式。 示例 在中LOOP,您可以(return)在任何表达式中使用Common Lisp表单,这将导致该LOOP表单立即求值为的值return。 LOOP也有一个return几乎几乎相同的子句,唯一的区别是您没有用括号将其括起来。该子句在LOOPDSL中使用,而形式在表达式中使用。