This page catalogs usability concerns as they come up during the design process.

The Unit type

The word 'unit' doesn't mean anything to anyone.

ML, unashamedly, has unit and () built in to the language. The message: get over it and learn wtf unit is.

Haskell has () and () which is differently confusing because the same symbol has meaning as a type and as a value that inhabits that type.

C/C++/C#/Java have void but this leads to severe regularity problems:

  • void has no values
  • void can't be used as a generic parameter, resulting in duplicate class definitions for generic classes that could be reasonably parameterized by void.
  • return func_returning_void(); doesn't work, leading to irregularity in flow control patterns.

Functional Wizardry

This doesn't enhance usability either.

Scala's documentation, while targeted at general audiences, is filled with FP nonsense. It's actually less approachable than F#'s excellent documentation.

Scalaz doesn't help either.

I love partial application, but lets be realistic. There is going to be a subset of the population that will not grok partial application, but will grok LINQ like stuff with tons of eta expansion.

Comments powered by Disqus