3 ms·
> indentation preferences are strictly enforced. It's basically taken an awkward edge-case from Haskell's indentation rules and made it not only a requirement,
by pyrale 7y ago
> indentation preferences are strictly enforced. It's basically taken an awkward edge-case from Haskell's indentation rules and made it not only a requirement, but a prerequisite to seeing if there are any other errors in your program.
Some parsing is less efficient than Haskell because Elm doesn't have 20+ years of PhDs working on it, but there is no such thing as compiler-enforced formatting. I can't think of compiler errors regarding format that are the expression of a choice, as you put it, rather than the expression of less manpower.
Likewise, `where` clauses aren't forbidden, they are simply not implemented, which, given that you can already use `let.. in`, is not especially shocking.
- T-R 7y agoThe omission of where clauses was explicitly a stylistic choice[1]. This is perfectly valid Haskell: #!/usr/bin/env stack {- stack script --resolver lts-12.19 -} data Test = Test {count :: Int} test = let something = Test { count = 5 } in 5+(count something) main = putStrLn $ show test To get the equivalent Elm to compile, it must be indented like this: test = let something = { count = 5 } in 5+(something.count) Note that `something` must be indented beyond the beginning of `let`, and the closing curly brace must be indented to the same level as `count`. These are both not a warning, but a parse error - you can confirm it with Ellie[2]. If that were due to a lack of resources, it would absolutely be understandable, but this also was an explicit choice[3] which developer time was spent implementing. [1] https://github.com/elm/compiler/issues/621 https://github.com/elm/compiler/issues/621 [2] https://ellie-app.com/5KRg4g5ZMkba1 https://ellie-app.com/5KRg4g5ZMkba1 [3] https://github.com/elm/compiler/issues/1573 https://github.com/elm/compiler/issues/1573