This library facilitates writing code in a more functional style inside Ruby.
Add this line to your application's Gemfile:
gem 'functional'
And then execute:
$ bundle
Or install it yourself as:
$ gem install functional
The lambda style allows you to write functions like this
require 'functions'
module PreludeLambdaUsage
include Functions::Prelude
Power = ->(p,x) { x**p }.curry
Square = Power.(2)
Squares = Map.(Square)
Sum_Of_Squares2 = Sum < Squares
Average = After.( [Sum,Length] ).( Divide )
Gcd = ->(a,b) { (Divisors.(a) & Divisors.(b)).max } # literal translation of the definition, just as an example
# Gcd of an array
GcdA1 = Max < Intersect < Map.(Divisors) # literal translation of the definition
GcdA2 = ReduceLeft.(Gcd) # faster
# Lcm of an array in function of Lcm of a pair
LcmA = ReduceLeft.(Lcm) # the same but without arguments
end
This code is currently copyrighted under the AGPL license. See http://www.gnu.org/licenses/agpl.html for more information.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request