以下是我的代码的一部分:
expand :: String -> [(Char,Int)]
expand "" = []
expand (a:b:xs) = [(a,digitToInt b)] ++ expand xs
expand函数的目的只是得到一个像"a1b2c3d4"
这样的字符串并输出[('a',1),('b',2),('c',3),('d',4)]
,我的代码可以执行此操作,但必须使用digitToInt
,并且需要添加{ {1}}
所以,如果我不想使用任何import Data.Char
个关键字,我该如何将import
转换为Char
。
答案 0 :(得分:2)
由于您常用的ASCII代码中只有十位有效数字,为什么不亲自编写该函数?当你在它时,你可以使它不偏袒:
digitToInt :: Char -> Maybe Int
digitToInt c = lookup c (zip ['0'..'9'] [0..9])
答案 1 :(得分:2)
您可以使用fromEnum
,例如
> fromEnum '5' - fromEnum '0'
5
注意非数字字符。
但最好的选择是使用库函数。