Issue #17043 has been reported by delonnewman (Delon Newman).

----------------------------------------
Feature #17043: Invokable module for custom Proc-like objects 
https://bugs.ruby-lang.org/issues/17043

* Author: delonnewman (Delon Newman)
* Status: Open
* Priority: Normal
----------------------------------------
Ruby beautifully integrates Functional and Object-Oriented Programming, and there's more moving in the direction of supporting Functional Programming. A generalization of the Proc interface would enable users to integrate a functional approach into their classic OOP design patterns. One of the obvious examples would be "Command" objects.

Also, generic structures which Ruby as great support for. Hash now has `to_proc`.  But, it'd be great to be able to treat sets as predicate functions.

I've put together a prototype that I've found useful in my own work here: https://github.com/delonnewman/invokable.

It works like Enumerable, it can be included in any class that implements a `call` method. Then you get `to_proc`, `curry`, `<<` and `>>` for right and left composition, and `memoize`. More could be added. If you include `Invokable::Command` you can treat your "Command" object as an automatically curried function.




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>