Hi,I'll worry about the learning curve of beginners.Maybe, beginners will try following session in their 1st week.ghci> :t foldrghci> :t ($)They'll get following result.Before ghc7.8:Prelude> :t foldrfoldr :: (a -> b -> b) -> b -> [a] -> bPrelude> :t ($)($) :: (a -> b) -> a -> bBeginners should only understand about following:* type variable (polymorphism)After ghc8.0:Prelude> :t foldrfoldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
Prelude> :t ($)($):: forall (w :: GHC.Types.Levity) a (b :: TYPE w).(a -> b) -> a -> b