Haskell - fmap fmap не работает

Я использую GHCi (версия 6.12.3), чтобы немного поиграть с Haskell. Я недавно читал о функторах и аппликативных функторах, подумал, нельзя ли реализовать что-то подобное <*> аппликативных функторов только с использованием примитивов функторов. или в более общем смысле

(Functor f1, Functor f2) => f1 (a -> b) -> f1 (f2 a -> f2 b)

Я пробовал

let q = fmap fmap

Я получил следующую ошибку

<interactive>:1:8:
    Ambiguous type variable `f1' in the constraint:
      `Functor f1' arising from a use of `fmap' at <interactive>:1:8-16
    Probable fix: add a type signature that fixes these type variable(s)

<interactive>:1:13:
    Ambiguous type variable `f' in the constraint:
      `Functor f' arising from a use of `fmap' at <interactive>:1:13-16
    Probable fix: add a type signature that fixes these type variable(s)

Writing предложенная выше подпись типа не помогла. Самое безумное, когда я набирал : t fmap fmap , я получил эквивалентный тип, как указано выше.

Что я делаю не так? Почему fmap fmap выдает ошибку типа, хотя GHCi находит для нее тип?

5
задан Mafi 29 April 2011 в 21:18
поделиться