У меня есть функция с двумя аргументами, с которыми мне нужно сопоставить соответствие шаблону. Если я использую currying по первому шаблону, он не будет компилироваться:
drop' :: Int -> [a] -> [a]
drop' 0 = id -- ghci: "Equations for drop' have different numbers of arguments"
drop' n (x:xs) = drop' (n-1) xs
Компилятор выводит этот результат:
99.hs:106:3:
Equations for drop' have different numbers of arguments
99.hs:106:3-15
99.hs:107:3-33
In an equation for `split':
split xs n
= (take' n xs, drop' n xs)
where
take' 0 _ = []
take' n (x : xs) = x : take (n - 1) xs
drop' 0 = id
drop' n (x : xs) = drop' (n - 1) xs
Failed, modules loaded: none.
Если я даю только рисунок в карри, то он компилируется:
drop' :: Int -> [a] -> [a]
drop' 0 = id -- compiles
Что дает?