mhl*_*mhl 0 quotes haskell char
我最近开始学习haskell,我正在做一些来自wikibooks的练习.我正在使用RLE编码进行练习,我得到了这样的解决方案:
import Data.List
rle :: String -> [(Int,Char)]
rle [] = []
rle xs = zip lengths chars
where
groups = group xs
lengths = map length groups
chars = map head groups
rle_toString :: [(Int, Char)] -> String
rle_toString [] = []
rle_toString (x:xs) = show (fst x ) ++ show (snd x) ++ rle_toString xs`
Run Code Online (Sandbox Code Playgroud)
不是一个非常优雅的解决方案,但它几乎可行.问题是,我得到这样的输出:"7'a'8'b'7'j'6'q'3'i'7'q'1'p'1'a'16'z'2'n'".带有字符的单引号并不优雅.如何能够做到像输出:"7a8b7j6q3i7q1p1a16z2n"?
show用于打印Haskell源代码中出现的值,因此在字符周围放置单引号(以及字符串周围的双引号,依此类推).[snd x]而是使用它来显示角色.
在Haskell中,String只是Char of List的简写[Char].例如,String "Foo"也可以这样写:['F','o','o'].因此,要将单个字符转换为字符串,只需将其放入括号中:[char].
| 归档时间: |
|
| 查看次数: |
380 次 |
| 最近记录: |