我想列出要用作列表
的标准输出的列表(define USER_INPUT (list (read-line)))
当我输入列表时,我不断收到此错误,因为要输入它的列表; s在map的过程中使用
map: contract violation
expected: list?
given: "10 10 10 10 10 10 10 10 10"
答案 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))))