3 ms·
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
by xigoi 5mo 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).
- onlyrealcuzzo 5mo agoI 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.
- adamddev1 5mo agoI 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 5mo agoRoc 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/b2503210da6b58a4ce1254de6a3310e3b5e85f89/docs/langref/functions.md https://github.com/roc-lang/roc/blob/b2503210da6b58a4ce1254d...
- keithasaurus 5mo agoHey - I'm the creator of Blorp, and like a lot of the ideas you have in Roc! Did you consider having opt-in purity? Or some other means of conveying impurity other than "!"?
- miroljub 5mo ago> 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".
- adastra22 5mo agoThe LLM is just going to leave out the pure by default.
- pepa65 5mo agoAn exclamation mark instead for impure would solve that.
- keithasaurus 5mo agoI'm the creator of Blorp -- this made me chuckle a bit. I hadn't even considered that possibility.
- keithasaurus 5mo agoHey... I'm the maintainer and had no idea this was posted. The reason pure is required is because it's clear and opt-in. There's a CLI subcommand called purify that will help identify pure functions that haven't been deemed so if that's desired. But there can be many (small) applications where pure doesn't even matter, so I don't really want to force someone to write "impure" for the main function, for example.