Можете ли вы придумать определение функции f, чтобы выражение
($) f id
успешно проходило типизацию, а
flip ($) id f
вызывало ошибку типов?
Можно использовать языковые расширения GHC.
Здравствуйте, nikov, Вы писали:
N>Можете ли вы придумать определение функции f, чтобы выражение
N>N>($) f id
N>
N>успешно проходило типизацию, а
N>N>flip ($) id f
N>
N>вызывало ошибку типов?
N>Можно использовать языковые расширения GHC.
Типы высших рангов же. Например, пример из
викикнижки:
foo :: (forall a. a -> a) -> (Char,Bool)
foo f = (f 'c', f True)