因此,我对Haskell并不陌生,我们已经设置了一些 class ,以使用函数式编程来创建算法。因此,我尝试制作一个函数,该函数采用整数数组并将每个数字分隔成一个列表。但是,我一直收到相同的错误,期望的类型与实际的类型不同,即使进行了一些研究,我也不明白这意味着什么。我试过制作一些会产生此错误的函数,所以有人可以指出我到底在做什么错,为什么这个错误总是以外行的方式出现?

module Cswk2 where

getCard :: Integer -> [Integer]
getCard n
      | n < 0 = []
      | otherwise = lst_numb : getCard pre_numb
       where
         (pre_numb, lst_numb) = n divMod 10

最佳答案

表达式n divMod 10毫无意义,因为此处nInteger,因此无法使用n函数和divMod参数执行函数应用程序。

您可以使用divMod n 10调用该函数,因此:

getCard :: Integer -> [Integer]
getCard n
    | n < 0 = []
    | otherwise = lst_numb : getCard pre_numb
    where (pre_numb, lst_numb) = divMod n 10

也可以使用反引号将divMod用作中缀运算符:
getCard :: Integer -> [Integer]
getCard n
    | n < 0 = []
    | otherwise = lst_numb : getCard pre_numb
    where (pre_numb, lst_numb) = n `divMod` 10

07-27 13:43