3 ms·
Oh, thanks! I didn't know that about defgeneric. How would you classify Ruby? You can reopen a class and add more methods to it at any time.
by kragen 1y ago
Oh, thanks! I didn't know that about defgeneric.
How would you classify Ruby? You can reopen a class and add more methods to it at any time.
- MarsIronPI 1y agoWell, reopening the class is the idiomatic way to define a method after the class definition, but if I wanted to write Ruby the ML/Common Lisp way, I would use "Class.define_method" like so: String.define_method :yell do puts self.upcase end Numeric.define_method :yell do self.to_s.yell end What I like most about Ruby is how close it gets to Lisp's flexibility of semantics (i.e. macros) without actually having macros. (Common Lisp is still my favorite language for larger projects though.)
- kragen 1y agoHmm. I'll have to think about that. I still feel like ML is very much the odd one out, here, because the individual pattern-matching clauses aren't values and can't be added later except by editing the "generic" function (and usually the definition of its argument type).