3 ms·
Idea for new readable code language
- willvarfar 14y agoWhy the } and `end`? Just use whitespace.
- pederbl 14y agoI'm not taking a stance on whether significant whitespace is better or worse than the alternative. I'd consider swapping the {} for where ... end which would make more sense and is more similar to Haskell
- willvarfar 14y agothe glaring thing is the mixing of both } and end... at least pick only one and be a bit consistent! :)
- lmm 14y agoLooks rather like scala: def pay_employees = pay(employees) def employees = Person where (_.employee) def pay(persons: Seq[Person]) = persons map { person => person.pay }
- pederbl 14y agoIt seems you missed my point that defining none scoped functions pollute the namespace. They also tend to drive the developer to be too generic for the specific usage that is needed. Scoped functions can be customized both in name and function to the specific need that they fulfills within their narrow scope. The problem with scoped functions in Ruby and Javascript is that they cannot be called before they are defined. Thus, the "thesis" of the code needs to come last, which is opposite to what the reader wants.
- lmm 14y agoDo functions behave the same as variables? Can I also use a variable before I've defined it (the same logic of the "thesis" would seem to apply; I might want to write pay() {return regular_salary + bonus; regular_salary = ...}). If so, how do you handle changes to the value of a variable without hopelessly confusing a reader of the code?
- pederbl 14y agoVariables are one of the worst enemies to readability. Because of them a reader often can't understand a line of code without looking at lots of other lines of code to figure out what the meaning of a variable actually is. If scoped functions are made easy there is no real need for variables. You might have to try it before you are convinced its true. I currently use Ruby dagger syntax and write code backwards to test the idea and it works beautifully. Actually, I find its hard for me to go back to coding "normal" Ruby.
- lmm 14y agoI actually agree with you, but I'd want to see how a basic CRUD webapp looks written in this style; a lot of things that seem simple to do in a pure-functional style become harder when you're working in a multicomponent system and accessing a database. A more theoretical criticism: this seems like it would encourage programming in top-down style with all the disadvantages that has.
- pederbl 14y agoWhat do you mean by top-down? I'd say it encourages bottom-up programming since scoped functions are so light weight. Scoped functions can easily be made global when it makes sense to share the logic.
- lmm 14y agoI mean top-down as in writing high-level functions first and then writing the lower-level functions which they call afterwards. It's already a tempting (but inferior) way to program; with this function order it would be very easy to write main() first and work down from there, hoisting inner functions out as necessary.