The evolution of: Decoupling base and GHC

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" – inferred foo :: (Eq a, Num a) => a -> String
    fooF 0.0 = "ZeroF"fooF :: (Eq a, Fractional a) => a -> String
  • do { } – requires Monad a =>
  • [ ] – requires Lists
  • if then else desugars to a case with a Bool discriminant.

It seems like you’re blaming GHC for implementing Haskell.