有什么想法如何解决错误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)
您不能,参数的数量应该相同。请注意,您maxBound将无法使用。实际上,maxBound它以小写字母开头,因此被视为变量(如果您打开警告,它将发出警告,称它maxBound正在掩盖现有的绑定)。
因此,您可以使用以下方法实现此目的:
cycleNext :: (Eq a, Enum a, Bounded a) => a -> a
cycleNext x | x == maxBound = minBound
| otherwise = succ xRun Code Online (Sandbox Code Playgroud)