yuun 发表于 2012-4-14 23:08:13

原来progn的表达式最多到256个

一直以为progn的表达式可以有很多很多,原来progn的表达式最多到256个。
当超过256个时,lisp能运行,但是编译时会发生参数过多的错误。
以下表达式不能用了,有方法替代吗?
(if (> a b) (progn(表达式1)
                            ~~~
                         (表达式 400)))




tm20038175 发表于 2012-4-14 23:27:19

是的Gu版主的生成代码器就遇到过这个问题,很奇怪。。。

e2002 发表于 2012-4-14 23:27:34

本帖最后由 e2002 于 2012-4-14 23:28 编辑

嵌套一次不久解决了?
(progn
    (progn
         1-256
   )
   (progn
         257-400
      )
)

langjs 发表于 2012-4-14 23:32:28

啊>\?原来如此啊,学习了,谢谢提醒

T_T 发表于 2012-4-15 04:14:44

没能力用到这么多,记一下还是有用的。谢谢

Gu_xl 发表于 2012-4-15 07:12:17

用cond函数替换if函数即可

cabinsummer 发表于 2012-4-15 07:12:55

其实不光progn,很多函数都不能有多于255个参数。你尝试一下在一个表中从1加到256

hhliuying 发表于 2021-5-20 19:58:08

(PROGN
      (HFK)
      (表达式1)
      (表达式2)……(表达式270))
类似这样的,怎么处理呢?求各位指教一下!

Bao_lai 发表于 2021-5-20 20:28:50

拆子函数试试

baitang36 发表于 2021-5-21 07:46:12

本帖最后由 baitang36 于 2021-5-21 07:48 编辑

我的办法是把这个progn变成defun,定义一个函数,然后调用这个函数。这个progn只是给编译器看的,编译后的代码中没有这个。超过256个的lsp可以运行,但无法编译成fas
有些程序command很多,一句会反编译成好多个。这样反编译的程序无法再进行编译。

页: [1]
查看完整版本: 原来progn的表达式最多到256个