Mar*_*res 4 haskell integer functional-programming list
我想知道是否有一个简单的方法可以[5,2,10]变成 "52a".不仅仅是在这种情况下,我想将任何数字> 9与相应的字母相关联.
提前致谢.
您希望对列表的每个元素执行某些操作以获取新列表.换句话说,您希望将一个函数(您必须自己定义)应用于每个元素.这就是Prelude的地图功能.
要在整数和单个字符之间进行转换,可以使用Data.Char模块中的chr和ord函数.
所以,
map (\i -> if i < 10 then chr (i + ord '0') else chr (i - 10 + ord 'a'))
Run Code Online (Sandbox Code Playgroud)
是[Int] - > String类型的函数,它可以执行您想要的操作(但不包括错误检查).
更慢但更优雅:
f = map ((['0'..'9'] ++ ['a'..'z']) !!)
Run Code Online (Sandbox Code Playgroud)
如果您的数字是0-15使用map intToDigitData.Char.