Why are partial functions so prevalent in
Prelude
?
The designing of Haskell commenced in 1987, with the first Report being published in 1990 (if you’re interested in learning some more about the origins of Haskell, read A History or Haskell). So Haskell is a language with a 30+ year-old design, and which ought to to explain your (reasonable) list of observations:
- partial functions
- inconsistent documentation
- lack of
Maybe
producing variants of certain functions - and incomplete pattern matching
- (…amongst others)
As described here:
…merely upgrading GHC alone to or past 9.8 (with the partiality warnings for head
and tail
) can now cause problems. Trying to apply more recent techniques to older code continues to be a fraught exercise.
Overall I feel that Haskell is the closest to what I would consider my ideal language. Which is why it both confuses and frustrates me that the language does such a fantastic job of tricking me into believing that it’s safe with it’s beautiful, elegant, sophisticated type system and syntax.
…well done! I don’t think I’ve ever thought about Haskell quite like that before - the only critiques I can think of which are (somewhat) similar were about Haskell’s current I/O model (which is a topic for a separate thread).