解决“针对“ cycleNext”的方程式具有不同数量的参数”

Ark*_*ost 1 haskell

有什么想法如何解决错误Equations for ‘cycleNext’ have different numbers of arguments而不在最后一行添加多余的参数吗?

cycleNext :: (Eq a, Enum a, Bounded a) => a -> a
cycleNext maxBound = minBound
cycleNext = succ
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 5

您不能,参数的数量应该相同。请注意,您maxBound无法使用。实际上,maxBound它以小写字母开头,因此被视为变量(如果您打开警告,它将发出警告,称它maxBound正在掩盖现有的绑定)。

因此,您可以使用以下方法实现此目的:

cycleNext :: (Eq a, Enum a, Bounded a) => a -> a
cycleNext x | x == maxBound = minBound
            | otherwise = succ x
Run Code Online (Sandbox Code Playgroud)