如何在Haskell中将Char转换为Int而不进行任何导入?

时间:2017-04-29 07:33:12

标签: haskell

以下是我的代码的一部分:

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

2 个答案:

答案 0 :(得分:2)

由于您常用的ASCII代码中只有十位有效数字,为什么不亲自编写该函数?当你在它时,你可以使它不偏袒:

digitToInt :: Char -> Maybe Int
digitToInt c = lookup c (zip ['0'..'9'] [0..9])

答案 1 :(得分:2)

您可以使用fromEnum,例如

> fromEnum '5' - fromEnum '0'
5

注意非数字字符。

但最好的选择是使用库函数。