Reasons that people were forced to move from Elm to something else?

Do you mean that the antipattern created had to do with many untyped functions inside

Untyped functions add some weight to the problem but is not the main issue.

let clause allows an imperative way to structure an application. In Java let’s say you define variables and then use them. Here we doing very similar. Although let clauses are expressions and you can define functions which accepts some arguments, most often you don’t do it. Instead, you are using parameters which comes from upper-level function.

Then, the next function you will put inside the let clause as well, cause it depends on the value of that previous function, and so on. Leave out function signatures, and your code literally will look like imperative statements.

These functions are very hard to test, reuse, refactor, read and maintain.

2 Likes