【问题标题】:Scheme lists with limited functions available可用功能有限的方案列表
【发布时间】:2013-04-05 19:02:15
【问题描述】:

有没有办法在Scheme中创建或添加列表,只有这些函数可用:equal?、car、cdr、cons、cond、if、quote、+、*、null?、符号? ,整数?,任何汽车/cdr 变体,定义,让。 (您会注意到不允许使用任何 #list 或 #append 调用)。

我尝试了几种不同的方法,但它只给出了 '(0 . 10) 之类的东西,而不是理想的 (0 10) 之类的东西。是的,这是更大任务的一部分。

【问题讨论】:

    标签: list scheme


    【解决方案1】:

    在 Scheme 中,“正确列表”以空列表结尾。所以,你可以这样写'(0 10)

    (cons 0 (cons 10 '()))
    

    一般来说,您始终可以使用(cons new-element old-list) 在正确列表的前面添加一些内容,然后您将获得一个新的正确列表。非空正确列表的cdr 本身始终是正确列表。 car 可以是任何东西。

    cons 是“构造”的缩写:它是构造列表的最原始过程。

    【讨论】:

    • 你完全正确。我将函数与将传递的函数分开测试,并为我的参数输入 0 而不是 '() ,后者是通过运行整个程序传递的函数。德普……
    【解决方案2】:

    一般来说: 您可以为自己定义所有不是“特殊形式”的内置过程。

    定义你自己的

    (define (append-my List1 List2)
       (if (null? List1)
           list2
           (cons (car List1) 
                 (append-my (cdr List1) List2))))
    

    在“计算机程序的结构和解释”一书中,您可以找到 内置过程的许多定义。每个对 Scheme 或 Lisp 感兴趣的人都应该学习 SICP 的前三章。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-03
      • 2012-02-03
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多