Haskell char引用

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"

Chr*_*ris 6

show用于打印Haskell源代码中出现的值,因此在字符周围放置单引号(以及字符串周围的双引号,依此类推).[snd x]而是使用它来显示角色.

在Haskell中,String只是Char of List的简写[Char].例如,String "Foo"也可以这样写:['F','o','o'].因此,要将单个字符转换为字符串,只需将其放入括号中:[char].