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 统一。这里要的是readinverse1,叫做show.

确实 map show [15..22] 几乎给出了您要求的结果——数字作为十进制编码的字符串——但每个数字仍然作为单独的列表元素,即键入 [String] 而您只需要 String。那么,asking Hoogle 呢?它提供了第五次点击所需的功能:concat.

如果你想要花哨的,你可以结合 mapconcat 阶段:concatMap 函数和 >>= 运算符都这样做。最紧凑的实现方式:[15..22]>>=show.


1show只是read右逆,是精确。