我目前拥有Haskell函数,该函数将整数转换为从原始整数中提取的数字列表。因此,我的问题是:有没有一种方法可以不使用moddiv?例如,如果我想对字符串执行相同的操作,则可以使用其他函数(例如head和tail等)创建一个函数。

我在这个问题上苦苦挣扎了一段时间,最后才来到SO并在另一篇文章中找到答案。我问这个问题的原因是,我从来没有想过自己使用moddiv

toDigits :: Integer -> [Integer]
toDigits n
 | n < 1 = []
 | otherwise = toDigits (n `div` 10) ++ [n `mod` 10]

最佳答案

您提到可以使用列表操作对字符串执行相同的操作。确实,那是另一种方式。您可以将整数转换为字符串,然后将每个字符转换为整数:

import Data.Char (digitToInt)

toDigits :: Int -> [Int]
toDigits = map digitToInt . show


在这里,我使用的是Int而不是Integer,但是如果您确实想要麻烦一点的话,可以使用Integer

toDigits :: Integer -> [Integer]
toDigits = map (fromIntegral . digitToInt) . show

10-02 23:30