我想从标准输出中创建一个列表作为列表的输入
(define USER_INPUT (list (read-line)))
当我输入列表时,我不断收到此错误,因为要输入的列表在 map 过程中使用
map: contract violation
expected: list?
given: "10 10 10 10 10 10 10 10 10"
最佳答案
问题在于 (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))))
关于list - 如何从 Racket 中的输入读取行中创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27306783/