LISP 程序调试与编程风格指南
1. LISP 程序调试要点
1.1 括号问题
LISP 中最常见的错误就是括号错误。每次处理函数时,几乎必须使用某种计数或配对工具来检查括号。同时,也可以检查单词的拼写以及数字 1 和 0、字母 I 和 O 可能产生的混淆。
当程序要运行时,可以将任意数量的定义函数放在两张穿孔卡片 DEFINE(( 和 1) 之间。不过,最快找到未配对括号的方法是将相关函数放在单独的 “DEFINE” 语句中。只有当括号不配对时,才会出现读入错误。需要注意的是,左右括号数量相同是必要条件,但不是充分条件,因为可能存在不必要的括号对或者缺少必要的括号对。
括号必须正确定位。当函数应用于参数时,左括号必须紧挨着函数名的左侧。例如,(CAR CDR X) 是错误的,正确的应该是 (CAR (CDR X));(CAR X ()) 也是错误的,正确的是 (CAR X)。当函数名作为参数时,应该以 (FUNCTION 函数名) 的形式表示。
1.2 函数和参数
对于每个函数的出现,都应该检查其参数的数量和顺序。与具有不定数量参数的形式不同,每个函数都有固定数量的参数。虽然对于一些函数(如 EQUAL 或 INTERSECTION),参数顺序可能不重要,但对于大多数函数来说,参数顺序至关重要。例如 MEMBER 函数,如果参数顺序颠倒,答案将不正确;如果第一个参数是原子,该函数将无法求值。
每个参数必须是正确的类型。当需要列表时,参数不应是原子;当需要原子符号或数字时,参数不应是列表。此外,不同的函数可能需要特定类型的列表作为参数。例如,调用 CAAR 或 CDAR 的函数预设其参数是包
超级会员免费看
订阅专栏 解锁全文
248

被折叠的 条评论
为什么被折叠?



