Я не так знаком с forall
, но недавно читал этот вопрос:Что делает ключевое слово forall в Haskell/GHC?
В одном из ответов есть этот пример:
{-# LANGUAGE RankNTypes #-}
liftTup :: (forall x. x -> f x) -> (a, b) -> (f a, f b)
liftTup liftFunc (t, v) = (liftFunc t, liftFunc v)
Объяснение хорошее, и я понимаю, что forall
здесь делает. Но мне интересно, есть ли конкретная причина, по которой это не поведение по умолчанию. Был ли когда-нибудь момент, когда это было бы невыгодно?
Изменить:Я имею в виду, есть ли причина, по которой фораллы не могут быть вставлены по умолчанию?