如何在球拍中输入读取线列表

时间:2014-12-05 00:27:09

标签: list scheme racket

我想列出要用作列表

的标准输出的列表
(define USER_INPUT  (list (read-line)))

当我输入列表时,我不断收到此错误,因为要输入它的列表; s在map的过程中使用

map: contract violation
  expected: list?
  given: "10 10 10 10 10 10 10 10 10"

1 个答案:

答案 0 :(得分:4)

问题是(read-line)产生一个字符串,所以你最终会得到一个字符串元素的列表。如果您特别想要读入数字列表,请在空格上拆分字符串并将所有元素转换为数字。

(map string->number (string-split (read-line)))

另一方面,如果你真的想要阅读具有Racket语法功能的列表,你可以使用read

> (read)
(10 10 10)
'(10 10 10)

如果您想指定列表内容但不想包括括号,那么您也可以这样做。

(read (open-input-string (format "(~a)" (read-line))))