Haskell,从整数集中制作单个字符串?

时间:2015-04-26 21:33:14

标签: string haskell count int range

如果您能告诉我如何从两个整数之间的范围内制作单个字符串,我将非常感激。就像[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]

1 个答案:

答案 0 :(得分:3)

  

我试过这样的事,但是不行。 let intList = map (read::Int->String) [15..22]

嗯...... read的目的是将字符串解析为可读值。因此它有一个类型签名String -> a,显然不会与Int -> String统一。你想要的是read 1 ,它被称为show

确实map show [15..22]几乎给出了你要求的结果 - 数字为十进制编码的字符串 - 但仍然将每个数字作为单独的列表元素,即类型[String],而只需要String }。好吧,asking Hoogle怎么样?它提供了您需要的功能,作为第五个命中:concat

如果您想获得幻想,可以将mapconcat阶段结合起来:concatMap函数和>>=运算符都可以。实现结果的最紧凑方式:[15..22]>>=show

1 show确切地说只是read右反