As a self-taught programmer who&#x27;s getting pretty comfortable with Haskell and also starting to dive into low-level languages (C, x86, Rust) I don&#x27;t think Haskell is <i>that</i> conceptually complex. It&#x27;s very <i>abstract</i> but it&#x27;s also quite consistent. Because its semantics are designed around mathematical laws rather than shuffling bits between CPU registers and RAM, it doesn&#x27;t have a lot of gotchas, WTFs, special cases, or safety rules to keep in your head. In Haskell, everything is an expression, all functions are closures, and all bindings are recursive, which means that you can inline or extract out expressions with incredible freedom, which makes refactoring so much easier.<p>Yes the runtime behavior is definitely less predictable with lazy evaluation, which is fine for web servers but terrible for systems programming.