Really, it's not that bad compared to the pile of type-system hacks in GHC. Import a module overriding its own export list, for testing / evil hacks.Īgda-style mixfix operators.
Choose one standard library for type-level programming and put it in Platform (if it's not already there). Work out the kinks as it becomes more widespread. Let's see a widespread adoption of type families / associated types and a general purge of fundeps where possible. Consider this proposal, the similar mechanisms in Scala, and the (little-used) implicit-argument extension that's already in GHC.īetter type-level programming. Make binding and scoping of typeclasses and instances less special, by integrating them into a more general scheme for implicit arguments. This has benefits for privilege isolation and general ability to reason about code. Split the IO monad into finer-grained monads for different sorts of imperative tasks: concurrency, exception handling, mutable state, file IO, networking, etc. Get (.) and id into Category and break up Arrow into smaller parts. Get rid of Show and Eq constraints on Num - better yet, split Num into several classes by operator, with context synonyms to ease the verbosity. Get Functor / Applicative / Monad into the right hierarchy. Overhaul the record system choose one library for first-class labels (from among the three or more available) and make it the standard solution, with good compiler integration
As a counterpart, here's my wishlist for the language itself: There are some great suggestions here regarding tools and implementation stuff.