Haskell,从整数集生成单个字符串?
Haskell, make single string from integer set?
如果您能告诉我如何从两个整数之间的范围中生成单个字符串,我将不胜感激。像 [5..10] 我需要得到一个“5678910”。然后我必须计算一个字符串中有多少(零,一......九)。
例如:如果我的范围是 [1..10],我需要打印出来
1 2 1 1 1 1 1 1 1 1
目前我只有在字符串中搜索元素的功能。
`countOfElem elem list = length $ filter (\x -> x == elem) list`
但是如何构造这样一个字符串的部分让我很烦,或者也许有更简单的方法?谢谢。
我试过类似的方法,但没有用。
let intList = map (read::Int->String) [15..22]
I tried something like this, but it wouldn't work. let intList = map (read::Int->String) [15..22]
嗯... read
的目的是将字符串解析为可读值。因此它有一个类型签名 String -> a
,显然不与 Int -> String
统一。这里要的是read
的inverse1,叫做show
.
确实 map show [15..22]
几乎给出了您要求的结果——数字作为十进制编码的字符串——但每个数字仍然作为单独的列表元素,即键入 [String]
而您只需要 String
。那么,asking Hoogle 呢?它提供了第五次点击所需的功能:concat
.
如果你想要花哨的,你可以结合 map
和 concat
阶段:concatMap
函数和 >>=
运算符都这样做。最紧凑的实现方式:[15..22]>>=show
.
1show
只是read
的右逆,是精确。
如果您能告诉我如何从两个整数之间的范围中生成单个字符串,我将不胜感激。像 [5..10] 我需要得到一个“5678910”。然后我必须计算一个字符串中有多少(零,一......九)。
例如:如果我的范围是 [1..10],我需要打印出来
1 2 1 1 1 1 1 1 1 1
目前我只有在字符串中搜索元素的功能。
`countOfElem elem list = length $ filter (\x -> x == elem) list`
但是如何构造这样一个字符串的部分让我很烦,或者也许有更简单的方法?谢谢。
我试过类似的方法,但没有用。
let intList = map (read::Int->String) [15..22]
I tried something like this, but it wouldn't work.
let intList = map (read::Int->String) [15..22]
嗯... read
的目的是将字符串解析为可读值。因此它有一个类型签名 String -> a
,显然不与 Int -> String
统一。这里要的是read
的inverse1,叫做show
.
确实 map show [15..22]
几乎给出了您要求的结果——数字作为十进制编码的字符串——但每个数字仍然作为单独的列表元素,即键入 [String]
而您只需要 String
。那么,asking Hoogle 呢?它提供了第五次点击所需的功能:concat
.
如果你想要花哨的,你可以结合 map
和 concat
阶段:concatMap
函数和 >>=
运算符都这样做。最紧凑的实现方式:[15..22]>>=show
.
1show
只是read
的右逆,是精确。