Как получается, что следующие проверки {-# LANGUAGE RankNTypes #-}
module Main where
class Foo a where
type FunFoo = (Foo a) => a -> IO()
data Bar = Bar {
funFoo :: FunFoo
}
setFunFoo
Я задаюсь вопросом, почему этот кусок кода не проверять тип: {-# LANGUAGE ScopedTypeVariables, Rank2Types, RankNTypes #-}
{-# OPTIONS -fglasgow-exts #-}
module Main where
foo :: [forall a. a]
fo
Более высокие категории рангов выглядят как отличное развлечение. Из Haskell wikibook приходит этот пример: foo :: (forall a. a -> a) -> (Char,Bool)
foo f = (f 'c', f True)
Теперь мы можем оценить