无法匹配 Haskell 函数的预期类型

Cad*_*yOG 6 haskell types functional-programming

所以我对haskell很陌生,我们已经设置了一些课程来使用函数式编程创建算法。所以我尝试制作一个函数,它接受一个整数数组并将每个数字分成一个列表。但是,我不断收到相同的错误,即预期类型与实际类型不同,即使在对其进行了一些研究之后,我也不明白这意味着什么。我已经尝试制作一些会产生此错误的函数,所以有人可以指出我到底做错了什么,以及为什么这个错误在外行人的术语中不断发生?

module Cswk2 where

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

Wil*_*sem 7

表达式n divMod 10没有意义,因为n是一个Integerhere,因此你不能用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
Run Code Online (Sandbox Code Playgroud)

或者您可以使用反引号divMod用作中缀运算符:

getCard :: Integer -> [Integer]
getCard n
    | n < 0 = []
    | otherwise = lst_numb : getCard pre_numb
    where (pre_numb, lst_numb) = n `divMod` 10
Run Code Online (Sandbox Code Playgroud)