(define list45 (map number->string(build-list 1000 values)))
list45
(first (list45))
(rest (list45))
错误: 申请:不是程序; 期望一个可以应用于参数的程序
我试图遍历我转换为字符串的列表。为此,我尝试使用first和rest函数来查看列表中的所有内容。为什么我会因此而出错?
由于
答案 0 :(得分:2)
只需将括号放在列表中:
(first list45)
=> "0"
(rest list45)
=> '("1" "2" … "998" "999")
在Scheme中,当您在()
之间包围某些内容时,解释器会将其评估为不带参数的函数应用程序。鉴于list45
不是函数,引发了“application:not a procedure”错误。在Racket中很容易迭代列表:
(for ([e (in-list list45)])
(displayln e))
但是如果由于某种原因你想使用first
和rest
来遍历列表,这是一种可能性,使用显式递归:
(define (iterate lst)
(unless (empty? lst)
(displayln (first lst))
(iterate (rest lst))))
(iterate list45)