Project

General

Profile

Actions

Feature #6594

open

Integrated Functor

Added by trans (Thomas Sawyer) about 9 years ago. Updated 8 months ago.

Status:
Assigned
Priority:
Normal
Target version:
-
[ruby-core:45657]

Description

I know the developers meeting is coming up so I'd like to get a few ideas I've had sitting in the wings out in the air before then.

One the more useful is the idea of integrating Functors directly into the language. "Functor" is the term I use for "higher-order function".

I blogged about this idea and you can read it here: http://trans.github.com/2011-09-07-ruby-heart-higher-order-functions/

The super short version is this:

def f => op, arg
  arg.send(__op__, arg)
end

f + 3  #=> 6
f * 3  #=> 9

Another example:

class String
  def file => op, *args
    File.send(__op__, self, *args)
  end
end

"README.rdoc".file.mtime  #=> 2012-06-14 12:34:45 -0400

I'm using => as means of indicating a higher-order function. Of course another syntax could be used if this won't fly. The important thing is the idea of higher-order functions being integrated directly into the language. Doing this without that integration requires the creation of an intermediate object for each call which is very inefficient.


Files

6594.pdf (77.8 KB) 6594.pdf trans (Thomas Sawyer), 07/01/2012 06:05 AM
Actions

Also available in: Atom PDF