不使用 Integer 类型属于 Show 类定义函数的事实
integerTostring :: Integer -> String
提示:使用功能
unfoldr :: (b-> Maybe(a,b))->b->[a])
来自 List 模块的,由公式
定义unfoldr f b=
case f b of
Nothing -> []
Just (a,b) -> a : unfoldr f b
where
**data Maybe a = Nothing| Just a deriving (Eq, Ord, Read, Show)**
Char 模块导出函数
intToDigit :: Int -> Char
标准前奏提供了以下类 Enum 的方法:
fromEnum :: (Enum a) => a -> Int
并且 Integer 类型属于 Enum 类......
我做的是:
import List, Char
integerToString :: Integer -> String
integerToString = reverse.unfoldr(\a -> if a>0 then Just(IntToDigit$fromEnum$a'mod'10,a'div'10)else Nothing
那是我必须做的吗?如果不是那么该做什么?
答案 0 :(得分:2)
是的,这是一个很好的解决方案,虽然你忘了处理负整数和0.此外,我建议使用divMod
函数而不是单独使用div
和mod
。