如果我有一个 s 表达式,例如 '(1 2 (3) (4 (5)) 6 7),我将如何将其转换为类似 (1 2 3 4 5 6 7) 的列表?我基本上需要从 s 表达式中提取所有原子。是否有内置功能可以帮助我做到这一点?
(define (convert-to-list s) ... )
到目前为止,我的算法是,如果第一个元素是原子,则将其附加到列表中。如果第一个元素是列表,则获取该元素的汽车,然后使用该函数调用函数(转换为列表),以便捕获递归的基本情况。并将在 convert-to-list 上调用的该列表的 cdr 附加到它的 car 上。我正在尝试从计算机程序的结构和解释中自学方案,而我只是在尝试随机的东西。事实证明,递归执行此操作比我预期的要困难。