I’m not clear from that discussion how much of base
is GHC-centric vs Haskell-centric:
would require going as close to fully-parameterised (no type classes) as possible:
- …and less like
Data.List.nub :: Eq a => [a] -> [a]
Although Haskell (the Language Report) is defined without mention of any specific classes or data types, in fact they’re snuck in all over the place:
foo 0 = "Zero"
– inferredfoo :: (Eq a, Num a) => a -> String
fooF 0.0 = "ZeroF"
–fooF :: (Eq a, Fractional a) => a -> String
do { }
– requiresMonad a =>
[ ]
– requires Listsif then else
desugars to acase
with aBool
discriminant.
It seems like you’re blaming GHC for implementing Haskell.