【问题标题】:iterating through a list in racket遍历球拍中的列表
【发布时间】:2014-09-14 02:38:07
【问题描述】:
(define list45 (map number->string(build-list 1000 values)))
list45
(first (list45))
(rest (list45))

错误: 申请:不是程序; 期望一个可以应用于参数的过程

我正在尝试遍历我转换为字符串的列表。为此,我尝试使用 first 和 rest 函数来查看列表中的所有内容。为什么我会收到错误消息?

谢谢

【问题讨论】:

  • 不要将list45 放在括号之间。这是(first list45)。

标签: racket


【解决方案1】:

只需将括号放在列表中即可:

(first list45)
=> "0"

(rest  list45)
=> '("1" "2" … "998" "999")

在Scheme 中,当您在() 之间包围某些内容时,解释器会将其评估为不带参数的函数应用程序。鉴于list45 不是函数,会引发“应用程序:不是过程”错误。在 Racket 中很容易遍历列表:

(for ([e (in-list list45)])
  (displayln e))

但是如果出于某种原因你想使用first 和rest 来遍历列表,这里有一种可能,使用显式递归:

(define (iterate lst)
  (unless (empty? lst)
    (displayln (first lst))
    (iterate (rest lst))))

(iterate list45)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 2021-12-21
    • 2022-01-20
    相关资源
    最近更新 更多