Сейчас я изучаю Haskell и пытаюсь поиграть с композицией функций.
Я написал две функции.
let func1 x y = x + y
let func2 t = t*2
Однако, когда я пытаюсь скомбинировать эти две функции, func2 . func1 1 2
я ожидаю получить 6.
Вместо этого я получаю эту ошибку:
No instance for (Num (a -> b))
arising from a use of `func1' at <interactive>:1:8-16
Possible fix: add an instance declaration for (Num (a -> b))
In the second argument of `(.)', namely `func1 1 2'
In the expression: func2 . func1 1 2
In the definition of `it': it = func2 . func1 1 2
Может кто-нибудь объяснить, почему это не работает?
(func2 .) . func1
илиfunc2 . func1 1
. Чтобы составить с функцией, принимающей более одного аргумента, вам нужно больше(.)
. - person Daniel Fischer   schedule 13.02.2013