я написал свою собственную take
функцию в Haskell, как это:As (@) шаблон в Haskell
take' :: (Integral n, Eq a) => n -> [a] -> [a]
take' n lst
| n <= 0 = []
| lst == [] = []
| otherwise = (head lst) : (take' (n-1) $ tail lst)
и он хорошо работает.
Но когда я пытаюсь написать ту же самую функцию, используя в качестве (@) модель в качестве аргументов функции, то кажется, что функция не распознает второй вариант сторожевую:
take' :: (Integral n, Eq a) => n -> [a] -> [a]
take' n [email protected](hd:tl)
| n <= 0 = []
| lst == [] = []
| otherwise = hd : (take' (n-1) $ tl)
Когда я пытаюсь take' 20 []
в ghci Я получаю ошибку Non-exhaustive patterns in function take'
.
Что я делаю неправильно?
Спасибо, Špela.
Я полностью пропустил это! Благодаря! – Spela