1
私はHaskellを初めて使用しています。私自身でdrop
を実装しています。Haskellで推論された型をチェックするときに、型が可変ではない引数
myDrop n xs = if n <= 0 || null xs
then xs
else myDrop (n - 1) (tail xs)
しかし、私はたとえば、myDrop -2 [1, 2, 3]
ため、n < 0
それを呼び出します。これは、エラーが発生します:
<interactive>:23:1: error:
• Non type-variable argument
in the constraint: Num ([t] -> t1 -> [a] -> [a])
(Use FlexibleContexts to permit this)
• When checking the inferred type
it :: forall t a t1.
(Num ([t] -> t1 -> [a] -> [a]), Num (t1 -> [a] -> [a]), Num t,
Num t1, Ord t1) =>
t1 -> [a] -> [a]