238 karma · joined May 1, 2020
- First-class modules don't feel very first class, with how clunky it is to use modules at the value level
- Records are very clunky and hacky to use
- Generative functors are a hack
- Special language-level equality magic is awful (although SML also has this problem)
- Special `let` forms (whether via ppx or integrated into the language) feel really hacky
- GADTs require too much handholding of the typechecker
- All the "Objective" parts have very few redeeming qualities and should probably never have existed
- The way infix operators work is really half-assed
I don't think OCaml is a _bad_ language - it's very practically useful. It's just not simple or elegant.
A true proof by contradiction would be "Assume [0, 1] is not uncountable. That leads to a contradiction, so [0, 1] is not not uncountable. By the law of the excluded middle, [0, 1] is therefore uncountable."
This proof seems to be "Assume [0, 1] is countable. That leads to a contradiction, so [0, 1] is not countable." That's not a proof by contradiction - it's just how you prove a negative.
This is a nice blog post about the distinction: https://existentialtype.wordpress.com/2017/03/04/a-proof-by-...
I'd say Standard ML better fits the bill of "dead simple". The only issue is that tooling and learning resources are nearly nonexistent.
It's one of those features where once you get used to it, it's hard to fathom how anyone programs without it. It's such a simple yet expressive feature that's incredibly useful when writing normal, ordinary code. Nothing fancy or theoretical.
It's admittedly paid and it's stupid that you should need to pay for functionality like this, but it's useful enough for other stuff (e.g. setting up buttons/chords to manage spaces to replace the trackpad gestures) that I live with it.
Yes. Good.
Sure it might benefit you and me, but Apple is designing their devices for normal people. Normal people don't care and likely benefit from the quality control of everything going through the curated App Store.
I agree that this kind of behavior sucks for you and me but we are a tiny niche audience. It's unreasonable to expect our needs to be catered to over the majority.
Strong disagree. Even in small hobby projects it's slow, has limited functionality, and needs frequent restarts to function properly.
For languages with good type systems, I'd recommend something like OCaml (or maybe F# - I know it's very similar and probably has a better ecosystem but I haven't personally used it).
Elm also seems decent - it's designed to be pretty simple and has JS interop but it doesn't have good tooling. Typescript is an alternative that has an okay type system but pretty quality tooling.
I'd recommend staying away from Haskell even though it's commonly recommended. The type system is quite complex and its use of monadic I/O makes writing "real" programs, even toy ones, difficult for many people. If you want to learn Haskell, I'd say start with OCaml/F#/Elm. Those are all very similar and will let you learn the fundamentals of ML-style programming before diving into Haskell-specific details.