Lisp 格式调用不';t按要求缩进

我有这个: (格式*标准输出*~v@a~a~%“(*5缩进)“父项结尾”(*5缩进)) 奇怪的是,(*5缩进)被添加为调试项,并且在打印输出中是正确的。但是,在我的函数中调用时,文本不会缩进,即使它打印出正确的indent值。如果我只是在REPL上执行这一行,它将正确地打印出来,并带有缩进。我的全部职能是: (defun print-object-and-children-data (object indent) "Recursively prints a chart object and

LISP-将列表中的属性设置为列表中的对象(购买时具有相同的索引)

我正在寻找一个函数,它应该执行以下操作: (function 'set-number '(1 2 3) '(number1 number2 number3)) 我可以使用LISP中的一些函数吗?(可能应用) 或者唯一的解决方案是使用dolist/dotimes 编辑:效果应该是:设置编号1,设置编号22,设置编号33,其中number1,number2,number3是一些插槽,设置编号是一种方法。在公共Lisp中,您可以使用: 在Common Lisp中,您可以使用: 函数应该做什么?效果应

Lisp 使用Define的方案中的Y组合子

为了了解定点组合器是什么以及它的用途,我写了自己的。但我没有使用严格的匿名函数编写它,比如,我只是使用define: (define combine (lambda (functional) (functional (lambda args (apply (combine functional) args)))) 我已经用阶乘和斐波那契函数对此进行了测试,它似乎有效。这是否符合定点组合器的形式定义?< P>编辑:当CHESSWEB或其他任何人证实了他的答案时

Lisp 负载提升组件故障

当我尝试通过emacs slime加载提升包时 (load "/home/user/lib/lift") 我发现下一个错误 ; compiling (LOAD "/home/user/lib/lift");; swank:close-connection: encoding error on stream #<SB-SYS:FD-STREAM for "socket 127.0.0.1:363

我是否遗漏了一些关于LISP中符号的重要事实?

正确的方法是什么 (defparameter form1 (list 'baz "hello")) (setf (car form1) (intern "print")) (eval form1) | |(实习生)使用的意义是什么? #:| |(制造符号)使用的意义是什么 如果它们只是名称的一部分,那么创建不同于我指定的符号的理由是什么 更新: (实习“印刷”) works垂直条是符号的引号。您在源代码中按字面意思输入的符号不使用它们,因为读取器将它们转换为所有大写,并且所有大写符号都不需要引

在Lisp中,如何获取表达式的值?

这将打印数据,但我希望它打印显示。我想打印值,而不是表达式,我该怎么做 (defun display (x) (list x)) (setq temp 'data) (set temp 'show) (display 'data) 如果你不知道这个变量是否有界呢?我必须编写一个函数,它接受一个键和一个值,如果键不存在,那么我必须执行setq key value,如果键已经存在,那么我将向键添加值。在这种情况下,如果我这样做(storedata键值),如果值没有被绑定,我会得到一个未绑定的

Quicklisp QUICKLOAD在我的源代码中应该放在哪里?哪里都没有?

假设我在net.aserve和bordeaux线程之上构建了一个应用程序。我的包声明可能如下所示: (defpackage :my-package (:use :cl :net.aserve :bordeaux-threads) (:export …)) 我使用Quicklisp,所以在编译包之前,我在SLIME中运行(ql:quickload“aserve”)(ql:quickload“bordeaux threads”),一切正常 当然,明天我会再次启动SLIME,我必须记住在编译

Lisp 如何在scheme中向文件写入相似显示(printf)?

使用TinyScheme 我正在用以下代码将代码写入文件(在此处以50%的速度解决): 但它使用“”qotes和\n\r原样编写代码,因此不会将其转换为换行符 我需要用(显示代码) 在示例中,有printf,但TinyScheme实现似乎没有printf,可能我需要发现(添加代码)printf?找到解决方案,唯一的修复方法是将char转换为write char (define assert (lambda (aa msg) (if (null? aa) #t

&引用;假;公共Lisp中的全局词汇变量

本节“全局变量和常量”中规定: “Common Lisp没有全局词汇变量,因此使用命名约定来确保动态绑定的全局变量的名称不会与局部变量重叠 可以使用不同名称的全局变量和a来伪造全局词汇变量。您不应该使用此技巧,除非您首先发布一个将其抽象掉的库。” 请有人帮我理解最后一句话的意思。最后一句话 您不应该使用这种技巧,除非您首先发布一个将其抽象掉的库 这意味着,如果您做了一些模拟全局词法变量的事情,那么该模拟的实现对于用户来说应该不明显。例如,您可以使用define symbol macro使用某种模

Lisp 为什么是;否则";方案中的特殊符号?它可以被定义为一个程序吗?

我最近通过阅读SICP开始了学习计划。在第一章中,它讨论了条件句,并讨论了在条件中使用else“特殊形式”——据我理解,它被定义为“解释器刚刚知道的东西”。我的问题是,为什么else被定义为“特殊形式”而不是过程 如果我启动我的mit scheme解释器,并键入:(else 1),它将引发一个错误。如果我定义类似于(define(myelse x)x)的内容,我可以用与cond表达式中相同的方式使用它,如: (define (abs x) (cond ((< x 0) (- x))

mapcar的lambda中的Lisp操作顺序

我正在Linux中运行clisp,并在书中练习ANSI Common Lisp。其中一种方法是使用mapcar创建一个函数,该函数获取一个整数列表,并返回一个列表,其中每个元素都是原始元素及其在列表中的索引。因此,如果我执行(foo'(0 0)),它将生成(0 1 2),等等 我尝试的是: (defun foo (lst) (let ((c 0)) (mapcar #'(lambda (x) (+ x c) (incf c)) lst))) 当我运行(foo'(0 0))时得到的是

clozure common lisp中的读取错误

有一个包含外语字符的s表达式文件,我正在阅读该文件,如下所示: (defun test (file) (with-open-file (stream file) (loop while (read stream nil nil)))) 它在ccl 1.8中读取文件时没有错误,但在1.9中抛出错误: ? (test "/users/markklein/desktop/naples.text") > Error: Reader error: Illegal symbol synt

如何在Lisp中创建一个从右到左实现lambda的函数

我试图通过尝试该语言的不同实现来更好地理解LIsp 我目前正在尝试创建一个函数,它获取lambda函数的列表,并从右到左和从左到右组合它们 下面是一个例子,以防我不清楚 (apply-right-left '((lambda (x) (+ x 1)) (lambda (x) (* x 2))) 1) --> 3 谢谢…请参见中的撰写: 因此, 如果要从左到右撰写,需要将:from end传递到 如果不想像上面那样使用compose创建中间函数,可以直接使用reduce: (reduce

<&书信电报;打印对象时出错>&燃气轮机;lisp-matlisp

我对CommonLisp很陌生,在尝试使用Matlisp包时遇到了一个问题,我用它加载(ql:quickload:Matlisp) 例如,当我尝试使用包时,只需执行: (randn '(2 2)) 我总是会听到这样一个错误: " 不会(是的,你读对了,buster!)为抽象张量类“tensor DOUBLE-FLOAT STRIDE-ACCESSOR SIMPLE-ARRAY”生成方法 在回溯中,我看到许多“打印对象时出错”消息(如所附图像所示)。 我尝试过的所有matlisp函数都会出现这

Lisp deftype-变量未绑定

我正在努力学习C.夏皮罗的通用Lisp。我试图定义第18章中的bTree类型。 我的代码如下 (defun elementp (e) (or (characterp e) (numberp e) (packagep e))) (deftype element () '(satisfies elementp)) (defun bstreep (tree) (or (typep tree element) (and (listp tree) (= (le

在lisp中更改数组值的最佳方法

我有一个二维数组,我想改变I,j项的值。当然,我会选择(setf(areffooij)3) 但是我的蜘蛛感知告诉我,我使用了大量的内存和处理,因为如果我失败了,我会一次又一次地删除和创建数组 我该怎么办?@jkiiski的评论是正确的。您没有创建阵列的副本。您正在原地修改它 @jkiiski的评论是正确的。您没有创建阵列的副本。您正在原地修改它 我不确定我是否理解你的要求。您是否担心(setf(aref…)正在创建数组的副本?如果是的话,情况就不是这样。我不确定我是否理解你的要求。您是否担心(s

Lisp 复制实体时如何更新其扩展数据信息

我有两个文本与一行关联。因为文本代表该行的一些数据,所以它们始终被视为该行的子行,并且在该行旁边可见。通过一些lisp例程,如果行的数据发生更改,文本实体将通过更改其文本来反映更改。为此,我将行的句柄存储到每个文本作为扩展数据,反之亦然,例如,将文本的句柄存储到行中 当我用文本复制行时,问题就出现了,其中每个行都有一个新的句柄,但存储的扩展数据却给出了旧的句柄,这导致了进一步的问题。我原以为vlr复制的反应堆可以解决我的问题,但由于我对反应堆不是很熟练,我似乎无法使它工作 有人能给我指一下正确的

AutoCAD LISP创建

我想创建一个LISP程序,用新模板更改完整的模板,用于批处理文件。我创建了一个脚本,但它显示了一个错误: (setq ss(ssget“_X”)((0.“插入”)(2.“旧块名称”)) (如果为ss(命令“\擦除“ss”)) _净化 _B “旧块名” _N _QSAVE (命令“\u insert”C:\\Users\\1011848\\Desktop\\new block.dwg“0,0”1“1”0) _QSAVE 及 (defun c:make_脚本(/prefix file_scr) (

Lisp 试图计算工资总额

我正在尝试创建一个程序,计算员工每周的总工资 这是我的密码 (princ"Enter working hours: ") (defparameter workhours(read)) (if (and (>= workhours 0)) (<= workhours 60)) (princ"Enter hourly pay rate: ") (defparameter HPrate(read)) (if(<= wor

Lisp CLTL2和ANSI CL之间的主要区别是什么?

有任何在线链接/资源吗?比尔·克莱门森(Bill Clementson)有一个 我在回答问题的时候也发现了。我没有比较这两者 正如海报所指出的,这些只是主要区别。其目的是让您调整cltl2的副本,使其不会在任何主要方面混淆您,但生成的文档不应被视为标准文档 就我个人而言,我没有麻烦-我使用cltl2作为床边阅读工具。斯蒂尔是一位优秀的作家!,深入了解语言的各个方面,以及这些方面的标准化过程;让我在CL中思考得更好。当我编程时,我只引用HyperSpec。比尔·克莱门森(Bill Clements

Lisp 如何使用SBCL';s SB-SPR的分配分析?

更新:升级到SBCL 1.0.24修复了我的问题。(虽然我还需要将SLIME升级到11-23-2008版本。稳定的2006-04-20版本以及CVS主管似乎与SBCL 1.0.24不兼容。) SBCL统计探查器的表示,除了CPU使用之外,还可以探查内存分配。然而,在我的一生中,除了一个简单的Lisp表单之外,我还无法让它进行更多的评测。下面是一个发生了什么的例子: CL-USER> (require :sb-sprof) ("SB-SPROF") CL-USER> (defun !

Lisp:确定列表是否包含谓词

作为Lisp作业的一部分,我将对找到的任何谓词使用apply或funcall。我的问题(在课程作业中未提及)是:我如何知道何时在我的参数列表中找到了谓词?我已经做了一些基本的谷歌搜索,到目前为止什么也没找到。我们被允许在作业中使用Lisp引用-即使是指向一个好的在线资源(也许是其中的一个特定页面)的指针也会很棒 规范引用是 我不知道您的赋值是什么,但您可以根据可能的谓词列表检查每个参数,或者确定您的参数是否是函数(functionp),如果您可以假设传入的所有函数都是谓词。补充Svante的答案

LISP:关键字参数,提供-p

目前,我正在学习Peter Seibel的“实用公共Lisp” 在“实用:简单数据库”(Practical:A Simple Database)一章中,Seibel用以下示例解释了关键字参数和所提供参数的用法: (defun foo (&key a (b 20) (c 30 c-p)) (list a b c c-p)) 结果: (foo :a 1 :b 2 :c 3) ==> (1 2 3 T) (foo :c 3 :b 2 :a 1) ==> (1 2 3 T) (

Lisp 合并两个矩阵。。。口齿不清

(合并矩阵“((31)(13))”((42)(11))) ***-EVAL:变量NULL没有值 我收到了这样一个错误:如何解决问题,谢谢。您收到的错误消息表明lisp试图将您对null的一个调用视为一个变量。例如,我可以像Frank Shearr那样定义矩阵行,并删除((null matrix-1)(copy tree matrix-2))s表达式周围的括号,从而复制这种行为。我建议您手动或使用类似的方法检查括号,这在我试图编译函数时给了我一个警告。OP的代码适合我。然而,我感到有动力去改进它,

为什么';LISP defun不需要在其参数参数前加引号吗?

采取以下措施: (defun sum-greater (x y z) (> (+ x y) z)) 我的理解是,在LISP中,列表中的第一个元素始终表示要在后续原子/列表上执行的函数。那么,为什么LISP不将(x y z)中的x视为在y和z上执行的函数呢。显然,这不是令人满意的行为,但这将是预期的行为 大概是定义defun的函数以某种方式覆盖了列表的标准LISP求值?如果是的话,你能详细说明一下吗 感谢Common Lisp中的IIRC至少defun是一个宏(),这意味着它可以为其参数

帮助减少Lisp功能

我有一个Lisp函数,它返回两个值中的最大值或两个值中的最小值。现在,我的代码有一些相对复杂的表达式来计算VALUE1和VALUE2 (defun treemax (bilist &optional ismin) (cond ;; Compute minimum (ismin (min (COMPLEX_EXPRESSION_1) (COMPLEX_EXPRESSION_2))) ;; Compute maximum (t (max (COMPLEX_

Lisp 在创建包时,是否最好将defpackage放在单独的文件中

以下示例在Paul Grahams ANSI Common Lisp中给出,作为进行封装的示例: (defpackage "CTR" (:use "COMMON-LISP") (:export "COUNTER" "INCREMENT" "CLEAR")) (in-package ctr) ;function definitions here 然而,在Peter Seibel的实用通用Lisp link中,他说: 由于程序包由读取器使用,因此必须定义程序包 在您可以加载或编译一个包

LISP/Nyquist打开文件并逐行读取

我正在努力打开一个文件,读每一行直到EOF。我使用的是nyquist,它基于XLISP,并且在打开文件时缺少常见的Lisp。我的代码是: (let ((in_file (open "/home/soodesune/testfile.csv" :if-does-not-exist nil))) (loop for line = (read-line in_file) while line do (print line)) (close in_f

Lisp 在给定以下语法的情况下,如何在Scheme中实现bignum?

我认为Scheme有一个内置类型Bignum,用于处理任意大的数字,但如果我想自己实现它,我将如何实现它 如果我没有弄错的话,它有以下语法: |n=0时的n |=() |其中n=qN+r,0你很幸运。这是一个经典问题。Andre van Meulebrock写了一系列关于bignums(表示和相关算法)的优秀文章。本文包含可运行的Scheme代码,因此请尝试使用他的代码 浏览MacTech的档案: 你的语法不正确,尽管它指向正确的方向。正确回答你的问题需要一本书,而不是一段或三段关于堆栈溢出的内

Lisp Wierd型函数

一个练习我有以下功能: (defun ifnot (test e1 e2) (if test e2 e1)) 我被要求描述以下表达式的评估: (ifnot nil "OK" (error "Unexpected test outcome")) 我不知道问题是关于令牌“nil”还是关于内置错误,您可以帮助我吗?如果不是,正如您所写,这是一个函数。对函数求值时,在对函数体求值之前对所有参数求值。虽然在您的示例中,e2的值被丢弃,但仍会计算e2,因此仍会调用error。如果它是一个宏,那么它

Lisp列出元素的编号

我正在为即将到来的LISP考试做准备,我遇到了一个无法解决的问题,因此,我希望有更有经验的人可以帮助我。我试图制作一个递归lisp程序,从列表中返回元素n的位置,但我不能使用n。我需要验证n是否在列表的0和长度之间-1如果元素不在列表中,则应显示错误消息。 类似这样的内容:(我的列表’(1 2 3)4)=>“错误列表只有3个元素” 有人能帮我解决这个问题吗?说到LISP,我还是个新手 到目前为止,我的代码是: (defun no-nth (n list) (declare (type (in

Lisp 关于两个函数的堆栈溢出

因此,我是lisp新手,对我遇到的问题感到非常困惑: (defun factorial (x) (if (>= x 1) (* x (factorial (- x 1))) 1)) 阶乘函数可以输出3000!但是没有问题 (defun sum (x) (if (<= x 1) 1 (+ x (sum (- x 1))))) (defun sum(x) (如果(您的函数不是尾部递归的,那么编译器(和解释器)会为每次迭代增加堆栈

Lisp包名在我的数据中预先添加了自己,而我没有告诉它

这是我第一次使用lisp处理包。在封装数据和代码方面,我大致了解了它们的工作原理。它似乎与其他语言非常相似,我现在不需要担心它们之间的差异 但是,我遇到了一个问题,如果我在代码中设置了以下内容: (setf baseNames '(coffee wax blue chili stink green soy blackeyed garden)) 随后将以以下形式发布: (print baseNames) (PIZZABAGEL::COFFEE PIZZABAGEL::WAX PIZZABAGEL

公共Lisp编程

我不熟悉lisp语言。才三天。 我有一个作业,我需要帮助写代码 编写一个包含三个参数的Lisp函数:一个名为aList的整数列表、一个名为min的整数和一个名为max的整数。该函数返回aList中位于min范围内的元素数 安装 在REPL中键入代码,然后再试一次 参考代码来查找列表中的元素数量,这些元素的数量在min范围内,这就是我将如何进行的 (defun countem (aList min max) (apply #'+ (mapcar (lambda (x) (if (<= m

LISP-从列表中添加所有原子(任意级别)

我猜这应该是用LISP很容易做到的事情(他们这样叫是有原因的),但我不能把我的想法放在它上面 假设我有以下列表: ((1 2 3)(4(5 6))) 我想把它们全部加起来,结果应该是21 我开始很简单,尝试从一个很好的列表中添加元素(如(1、2、3)),我几乎做到了: (defun sum (list) (if list (+ (car list) (sum (cdr list))) 0) ) 也许有更好的编码方式和更好的排列方式,但现在这种(几乎类似C的)缩进

为什么lisp使用gensym和其他语言don';T 如果我错了,请纠正我,但是在爪哇、C、C++、Python、JavaScript或者我使用过的任何其他语言中,没有什么类似GySym的,而且我似乎从来都不需要它。为什么它在Lisp中是必需的而在其他语言中不是必需的?为了澄清,我正在学习Common Lisp。

无法说出哪些语言与GENSYM等效。许多语言都没有一流的符号数据类型(包含内部和非内部符号),许多语言也没有提供类似的代码生成(宏…)功能 在包中注册一个内部符号。一个不感兴趣的人不是。如果读取器(读取器是以文本s表达式作为输入并返回数据的Lisp子系统)在同一个包中看到两个具有相同名称的插入符号,则假定它是相同的符号: CL-USER 35 > (eq 'cl:list 'cl:list) T 如果读取器看到一个非预期符号,它将创建一个新符号: CL-USER 36 > (eq

Lisp #1#不是符号或lambda表达式

我尝试用LISP创建Euklid的算法。 我的代码: (defun euklid( x y) (cond ((= x y) x) ((> x y) (euklid((- x y) y))) ) 我得到一个错误,形式为(#1=(-X Y)Y),#1#不是符号或lambda表达式。 如何更正此错误?我知道错误在我的代码中。Reader变量 #1=…语法()意味着您的Lisp环境正在将由…表示的任何数据绑定到读取器变量1。#1#语法()引用以前绑定到同一读卡

Lisp中出错:LET绑定规范格式不正确

我对普通口齿不清真的是个新手,还有些挣扎。我正在研究一个函数,该函数给定x,y和一个数组,如果(x y)中有对角元素,则该数组的垂直值索引返回NIL 但是,当我尝试此函数时,会出现以下错误: ; caught ERROR: ; The LET binding spec (AREF ARRAY LINE) is malformed. ; (SB-INT:NAMED-LAMBDA DIAGONAL? ; (X Y ARRAY) ; (BLOCK DIAGON

如何在LISP中将一个列表与另一个列表进行比较,并避免由于未定义变量而导致的求值错误?

我试着在CommonLisp中比较两个列表,如果它们匹配,则打印“RobotRobbie”。其中一个输入是用户给定的列表(存储在wff中),另一个输入是来自称为“nums”的列表列表的列表。但是,当我运行代码时,会出现以下错误: - EVAL: undefined function X 为什么会发生这种情况?我该如何解决?我已在下面附上我的代码以供参考: (defun same-elements (l1 l2) (and (subsetp l1 l2) (subsetp l2 l1)))

Lisp 使用列表项形成新符号的步骤

假设我有两个lisp列表 (setq a'(pq)) (setq b’(1-2)) (a车)是p车 (b车)是1 现在我想定义一个符号(测试p1),但是如果我使用下面的 (设置c'(测试(a车)(b车))) 我得到(测试(a车)(b车)) 这是可以理解的,但我只是想知道如何将这些(a车)替换为p,将(b车)替换为1,并形成一个新的符号“(测试P1) 谢谢如果您想制作一个列表,您想要的功能是列表: (list 'test (car a) (car b))` ;; creates/update

LISP逐级显示二叉树

我有一个列表,看起来像(a(B(cd))(E(F)),它代表了这棵树: A / \ B E / \ / C D F 如何将其打印为(A B E C D F) 这是我所能做到的: ((lambda(tree) (loop for ele in tree do (print ele))) my-list) 但它显示: A (B (C D)) (E (F)) NIL 我对CommonLisp很陌生,所以可能有一些函数我应该使用。如果是这样的话,请

为什么Lisp社区如此分散?

首先,该语言不仅有两种主要方言(CommonLisp和Scheme),而且每种方言都有许多单独的实现。例如,鸡肉计划、Bigloo等。。。每个都有细微的差别 从现代的角度来看,这很奇怪,因为现在的语言往往有明确的实现/规范。想想Java、C#、Python、Ruby等,它们都有一个明确的站点,您可以访问这些站点获取API文档、下载等。当然,Lisp早于所有这些语言。但话说回来,即使是C/C++也是标准化的(或多或少) 这个社区的分裂是由于Lisp时代吗?或者不同的实现/方言旨在解决不同的问题?我

Lisp 闭包和动态范围

我正在开发一个玩具lisp实现,灵感来自。因此,只有动态范围的变量(加上文件局部变量)。最近我想知道,是否有可能在语言中添加闭包。当前,lambda表达式中引用的所有变量的绑定存储在表达式的激活记录中(即,在lisp实现的显式堆栈上),并在lambda表达式的执行完成时恢复。通过保存闭包引用的符号的绑定,然后在闭包执行期间恢复闭包携带的绑定,然后恢复以前的绑定,应该可以实现闭包 现在我们来问一个问题:这是否等同于词法闭包?这是一个很好的词法闭包模拟,取决于您所说的保存绑定的意思……,它并不完全相

如何在lisp中查找类的包?

假设我想找出在哪个包中定义了一个类,例如(defclassX()())是在p1中定义的。一种方法是通过(符号package'x)获取包。此解决方案的问题是x在另一个包p2中导出。还有其他建议吗?正如Rainer Joswig所说,包中没有定义类;符号有包,类的名称是符号 如果您想知道类定义读取、编译或加载时*PACKAGE*的值(可能是三个不同的值),我不相信有任何方法可以检索它,除非您当时编写代码来存储它 此外,这似乎不是一条有意义的信息。包只是符号的名称空间,在读取、编译或加载类定义时处于当

Lisp “为什么我会得到一个未绑定的错误?”;原子;

我试图通过“小口吃”,已经在第一章遇到了障碍。我对Emacs比较陌生(这激发了我学习Lisp和clojure的兴趣)。我下载了麻省理工学院的scheme应用程序,正在Edwin上做练习 我正在努力: (atom? (cons a l)) 其中a是一个原子,l是一个已经定义的列表。我得到以下错误: ;Unbound variable: atom? 为什么??我在使用“null?”函数时没有问题。我认为“atom?”是一个内部函数,用于检查返回的值是否是atom 任何解释都将不胜感激。我还没有设

Lisp 组织模式:组织议程文件defvar目录";评估;?

我的.emacs中有以下设置 (defvar org-dir "/home/mash/read/org/") 并在周围使用它,例如 (setq org-directory org-dir) (setq org-default-notes-file (concat org-dir "mash.org")) (setq org-agenda-files '("/home/mash/read/org/")) 现在我知道您可以指定一个目录,例如 (setq org-directory org-di

Lisp:如何获得最终循环值? (定义索引迭代(n) (let((x 0)) (当(

我有下面的lisp代码,在循环的末尾,我想返回值j。我调查过: collect但它返回一个包含我想要的值的值列表(最后一个j) 最后但它不起作用 返回但它会提前结束循环 您需要将组合起来,如下所示: (defun index-iteration (n) (let ((x 0)) (loop for j from 0 to n while (< x n) do (setf x (max-index-for-iteration j))))) 请注意这个不幸的用法

上一页   1   2   3    4   5   6  ... 下一页 最后一页 共 64 页