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
() built in to the language. The message: get over it and learn wtf unit is.
() which is differently confusing because the same symbol has meaning as a type and as a value that inhabits that type.
void but this leads to severe regularity problems:
voidhas no values
voidcan't be used as a generic parameter, resulting in duplicate class definitions for generic classes that could be reasonably parameterized by
return func_returning_void();doesn't work, leading to irregularity in flow control patterns.
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.