Handle value declarations better
We are still very close to the compiler's AST. When we get a full value, it comes in many pieces. For example:
f :: Maybe ~> List
f (Just x) = [x]
f Nothing = []
would end up as something like [Type, Value, Value]
. When we format that, we end up with some awkwardness:
f ::
Maybe
~> List
f (Just x) = [ x
]
f Nothing = []
There's a line between the first value declaration and the second because they're different value declarations (as parsed) and we always put a line after a value declaration.
What we should do is make another pass on the AST to transform it to something like [(Maybe Type, NonEmpty Value)]
. Then, we ought to be able to handle multi-line values better. Should also make formatting types easier, as we do some unclear things to make them work.