1
想对被输入了标准输出的列表作为列表我如何做一个清单出来一个输入的读线的球拍
(define USER_INPUT (list (read-line)))
当我输入列表,我不断收到此错误,因为该列表,以输入它; S在地图
map: contract violation
expected: list?
given: "10 10 10 10 10 10 10 10 10"
想对被输入了标准输出的列表作为列表我如何做一个清单出来一个输入的读线的球拍
(define USER_INPUT (list (read-line)))
当我输入列表,我不断收到此错误,因为该列表,以输入它; S在地图
map: contract violation
expected: list?
given: "10 10 10 10 10 10 10 10 10"
麻烦的过程中使用的是(read-line)
产生一个字符串,所以你刚刚结束了一个字符串元素的列表。如果您特别想读取数字列表,请将字符串拆分为空格并将所有元素转换为数字。
(map string->number (string-split (read-line)))
在另一方面,如果你真的想用球拍语法的全功率表来读取,你可以使用read
。
> (read)
(10 10 10)
'(10 10 10)
如果要指定列表内容但不希望包括括号,好了,你可以做到这一点。
(read (open-input-string (format "(~a)" (read-line))))
非常感谢Alexis!我是Racket新手,现在我已经玩了几个星期了。你是非常有帮助的 – JJ12 2014-12-05 09:58:22
对于后一种情况,你也可以做'(sequence-> list(with-input-from-string(read-line)in-port))'或者甚至只是'(with-input-from -string(read-line)in-port)'如果一个序列足够。 – blubberdiblub 2017-04-21 08:18:40