| ▲ | xigoi 3 hours ago | |
Why is `pure` a keyword that needs to be added, with impure being the default? This discourages programmers from marking functions as pure. I like how Nim does it, with `func` declaring a function (pure) and `proc` declaring a procedure (impure). | ||
| ▲ | adamddev1 2 hours ago | parent | next [-] | |
I also really like the distinction between a function and procedure. The function is a pure mathematical function. The procedure is a series of instructions. | ||
| ▲ | rtfeldman an hour ago | parent | prev | next [-] | |
Roc defaults functions to being pure, and functions that can run side effects are inferred to have a different type by the compiler based on usage. By convention, their names should also end in `!` (e.g. `transform` for the name of a pure function and `transform!` if it does side effects), and the compiler warns you if you don't follow that convention. https://github.com/roc-lang/roc/blob/b2503210da6b58a4ce1254d... | ||
| ▲ | onlyrealcuzzo 3 hours ago | parent | prev | next [-] | |
I would also recommend this default. We want languages that encourage good design. If your goal is - like Crystal - to be as pain free of a migration from Python to Blorp, this shouldn't really impact it, since the compiler can and should be able to auto-fix this. | ||
| ▲ | miroljub an hour ago | parent | prev [-] | |
> Why is `pure` a keyword that needs to be added, with impure being the default? Marketing. Instead of reading the code littered with "impure" keywords, you look at the beautiful code marked as "pure". | ||