What do people think about a breaking release which “cleans up” some syntax features of the language?
Following is one example I wish could change, but I’m sure there are others, e.g. the type class/instance syntax is a little unclear in that constraints look like they affect instance selection, but they actually don’t.
I’d like if the language removed support for “re-defining a function” (as a newbie would read it) for each constructor of its input args:
-- Instead of: f:: Animal -> Food -> Boolean f Cat Catfood = true f Dog Dogfood = true f _ _ = false -- Require: f:: Animal -> Food -> Boolean f = case _, _ of Cat Catfood = true Dog Dogfood = true _ _ = false -- Or make a new syntax: f:: Animal -> Food -> Boolean f Cat Catfood = true Dog Dogfood = true _ _ = false