From: Trans Date: 2006-03-20T00:53:50+09:00 Subject: Re: Functor Opinion > Can you give example of where you used it? Check two posts back at 'facet/kernel/__meta__'. Here's another for a project I've been working on this week: class Program # ... def self.compile( yml, prg=nil ) prg ||= Program.new sig = (class << prg; self; end) yml.each { |key, val| case val when RubyFn #val.out = val.out || key sig.class_eval { define_method( key ) { eval( val.code ) } } when Fn sig.class_eval { define_method( key ) { calc( val.code ) } } when Hash sig.class_eval { ftr = Functor.new { |op, *args| prg.send(op, *args) } res = compile( val, ftr ) define_method( key ) { ftr } } when Type # do nothing else sig.class_eval { define_method( key ) { val } } end } return prg end end