【问题标题】:Using a list of list as an argument for a function in Scheme?使用列表列表作为Scheme中函数的参数?
【发布时间】:2014-05-03 18:06:53
【问题描述】:

我在 Scheme 中有一个函数,我想接受一个列表列表。然后我希望能够将此列表中的每个列表发送到另一个函数,但我无法弄清楚如何让函数接受列表列表。我现在的样子是这样的:

(define (myFunction lst)
  (car(lst)))

我希望能够像这样调用函数:

(myFunction '((1 2 3 4) (5 6 7 8) (9 10 11 12))

但是当我尝试这样做时,我收到以下错误:

function call: expected a function after the open parenthesis, but 
               received (list (list 1 2 3 4) (list (5 6 7 8) (list 9 10 11 12))

谁能看到我做错了什么?就好像它认为列表列表是一个字符串。我只想能够拆分列表(使用 car 和 cdr)并使用它们或将所有元素组合到一个列表中。抱歉,如果这听起来太明显了,但我已经阅读了有关 Scheme 的书并在 Google 上搜索了几个小时的答案。

【问题讨论】:

标签: scheme


【解决方案1】:

你有一个简单的错误。删除( 之前的lst

(define (myFunction lst)
  (car lst))

【讨论】:

  • 我现在觉得很傻,解决了!非常感谢:)
  • 很高兴能为您提供帮助。
【解决方案2】:

在:(define (myFunction lst) (car(lst)) 中,(lst) 的形式是一个函数调用 - 因此报告了错误。如果您想要列表的第一个元素,请使用(car lst),如果您想要其他内容,请使用(cdr lst)

另外,您提供的myFunction 定义有不平衡括号;不确定它是如何产生错误的。也许您在 StackOverflow 中的剪切和粘贴是错误的。

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 2011-01-24
    • 2012-04-05
    • 1970-01-01
    • 2013-11-13
    • 2011-06-26
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多