Just spent a good half hour pulling my hair out trying to figure out why one of the #elisp functions I had just written was always returning nil
when I tested it. Turns out, my test was mistakenly passing its inputs to the wrong (but similarly named) function (pivot-table-get-columns
instead of pivot-table-get-body
).
#Haskell's type system would've caught this. 🙃
Omar Antolín
in reply to Jonathan Lamothe • • •Oriel Jutty
in reply to Jonathan Lamothe • • •This is why C89 wisely limits external symbols to 6 significant characters.
/s
Jonathan Lamothe
in reply to Oriel Jutty • •@Oriel Jutty
*twitch*
Kazinator
in reply to Jonathan Lamothe • • •C's type system would also have caught it, and it isn't worth a hill of beans.
By caught it what do we mean? This is not a case of some undetected error escaping your attention due to dynamic typing. You know you got a nil which is unexpected and wrong. It's in a test case which catches it.
The only thing a type system would change is that you would instead waste a half hour not understanding how your obviously correct function call can possibly have the wrong return type.
Jonathan Lamothe
in reply to Kazinator • •nil
is about the least useful failure state there is.