Сопоставление с образцом с функциями (высшего порядка) в Haskell

Я пытаюсь немного изучить Haskell с помощью онлайн-книги «Learn you a Haskell», и у меня есть вопрос о функциях высшего порядка .

Я видел несколько примеров , и я хочу выполнить еще несколько дополнительных функций, но не знаю, почему я всегда читаю следующее исключение:

*** Исключение: euler13.hs: (11,0) - (15,39): и у меня вопрос о функциях высшего порядка. Я видел несколько примеров и хочу сделать еще несколько дополнительных функций ...

Я пытаюсь немного изучить Haskell с помощью онлайн-книги «Learn you a Haskell», и у меня есть вопрос о функциях высшего порядка .

Я видел несколько примеров , и я хочу выполнить еще несколько дополнительных функций, но не знаю, почему я всегда читаю следующее исключение:

*** Исключение: euler13.hs: (11,0) - (15,39): и у меня вопрос о функциях высшего порядка. Я видел несколько примеров и хочу сделать еще несколько дополнительных функций ...

Я пытаюсь немного изучить Haskell с помощью онлайн-книги «Learn you a Haskell», и у меня есть вопрос о функциях высшего порядка .

Я видел несколько примеров и хочу выполнить еще несколько дополнительных функций, но не знаю, почему я всегда читаю следующее исключение:

*** Исключение: euler13.hs: (11,0) - (15,39): Неисчерпывающие шаблоны в функции apply

И функция, которую я определил, такова:

apply :: (Num b, Ord b) => (a -> a) -> b -> [a] -> [a]
apply f n [] = []
apply f n [x]
    | n <= 1    = map f [x]
    | otherwise = apply f (n-1) (map f [x])

Я хочу применить n раз конкретную функцию с именем f к списку «[x]». Я попытался сделать эту функцию полиморфной, чтобы тип параметра был 'a'. Но я также хочу использовать числа и списки, поэтому напрямую я использую список (если я хочу использовать функцию только для числа, очевидно, это будет [число])

Кто-нибудь может мне помочь, пожалуйста? Мне нравится этот язык, но это немного сложно, когда вы изучаете, потому что он сильно отличается от Java или c (например)

Спасибо!

5
задан albertoblaz 1 February 2011 в 21:39
поделиться