Rog*_*ews 8 string haskell list
我String
喜欢"1 2 3 4 5"
.如何将其转换为[1,2,3,4,5]
Haskell 中的整数列表?如果清单"12345"
怎么办?
Mar*_*ler 25
您可以使用
Prelude> map read $ words "1 2 3 4 5" :: [Int]
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
在这里,我们使用words
分割"1 2 3 4 5"
空白,以便我们得到["1", "2", "3", "4", "5"]
.该read
函数现在可以将单个字符串转换为整数.它有类型,Read a => String -> a
所以它实际上可以转换为Read
类型类中的任何东西,包括Int
.这是因为返回类型中的类型变量需要指定上面的类型.
对于没有空格的字符串,我们需要将每个字符串转换Char
为单个元素列表.这可以通过应用(:"")
它来完成- 一个String
只是一个Char
s 的列表.然后我们再次申请read
:
Prelude> map (read . (:"")) "12345" :: [Int]
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
q1 :: Integral a => String -> [a]
q1 = map read . words
q2 :: Integral a => String -> [a]
q2 = map (read . return)
Run Code Online (Sandbox Code Playgroud)
错误处理留作练习.(提示:您需要一个不同的返回类型.)
归档时间: |
|
查看次数: |
12361 次 |
最近记录: |