| ▲ | graypegg 4 days ago | |||||||
It's not always a good thing, but I love Ruby's ability to define new runtime-valid syntax that looks pretty much native to Ruby itself.
the pipe operator seems to be defined here, as just a regular method: https://codeberg.org/Iow/type/src/commit/aaa079bf3dd2ac6b471... the type gets picked out by the module included in the class you want typechecked, which reads the default value from all methods (which is the "real" ruby syntax here, where `thing` is assigned a default value of the result of calling `String | "default value"`) and uses that for type checking.I like that over-flexibility... it's regularly too clever and makes it difficult to follow the flow of an application, but I like it all the same. | ||||||||
| ▲ | shevy-java 4 hours ago | parent | next [-] | |||||||
> it's regularly too clever and makes it difficult to follow the flow of an application Too much magic means nobody can understand the code anymore. Most people who design DSLs don't understand this. It's a problem in ruby - ruby's syntax is so flexible that one ends up with kind of dialects in it. | ||||||||
| ||||||||
| ▲ | brudgers 3 days ago | parent | prev [-] | |||||||
Though the ability to arbitrarily create first class syntax is why Rails is Rails, my favorite use case is FizzBuzz as a property of Integers. YMMV. | ||||||||
| ||||||||