From: gwtmp01@... Date: 2007-01-24T07:48:13+09:00 Subject: Re: Minor Change Proposal for Classes 'Object' and 'Method' If you haven't read the parent message to this, this won't make any sense... When I first wrote out: obj.x(1,2) # 1 obj.resolve_then_apply(:x, 1, 2) # 2 obj.resolve(:x).apply(1,2) # 3 I saw this interesting possibility: obj.resolve(:x, 1).apply(2) I don't have a very strong functional programming knowledge but I believe this is an example of currying. It suggests that Kernel#method and Module#instance_method could be be extended to have this functionality: dfirst = Array.instance_method(:delete, 1) a = [1,2] dfirst.bind(a).call a # [2] It would be nice if you could stuff this curried method back into the class under a new name. The problem is that you can't pass an UnboundMethod instance to Module#define_method. UnboundMethod#to_proc doesn't exist and even if it did, it would be a pretty strange instance of Proc since it would not be callable. This concept was also suggested by Christian Neukirchen. Maybe there is some room to play around with the semantics of methods/blocks/procs? Gary Wright