common lisp 函数调用的顺序

这个问题是老长时间之前的了,我在repl下边看书边写代码测试一些看书想到的问题,然后把你个内建函数名写错了,sbcl提示我参数不是list,但是群里求救别人都没看出来是函数名写错了,后来我发现是特么的函数名写错。但是我很纳闷,为啥会这么个出错模式。 有人推荐我下了lw,lisp works。然后lisp works提示函数未找到。然后就会轻松知道原因了。 后来妮神给我讲,函数调用是根据名字来确定用哪个函数,而cl标准未规定函数调用的时候,是在参数计算前确定哪个函数还是在后,或者中间。 所以这个问题就导致了,sbcl和lw一样是先执行参数后确定函数的,因为可能参数里边会定义这个函数。(javascript也是这样的)sbcl执行参数发现参数不是list报错了,我测试的那个函数是匹配列表的,可以是cons所以不一定是列表,真是凑巧啊。而lw可能回溯回去 报了函数名不正确的错误。 群里另一个人好像用clisp的实现,是先确定函数然后计算参数的。 当时群里写过一个测试代码,杀叔让我写一个python版本的,我在函数里边用了global,然后python也就替换了。

上一篇:
下一篇:

相关文章:

Categories: 博客记录

0 Responses so far.

Leave a Reply