This presentation explores Ruby from a functional programming perspective. While Ruby is primarily an object-oriented programming language, it also supports functional programming (FP) through the following:
* lambda and non-lambda instances of the Proc class, which are closures, first class objects, and higher order functions
* methods (instance and class), which can be converted to objects that behave like first class functions
* a rich Enumerable library that supports lazy evaluation, allowing efficient handling of infinite lists or large datasets.
* partial application and currying
* pattern matching
In addition, the features and limitations of immutability, such as the `freeze` method and the `hamster` gem (library), will be discussed.
The standard Ruby implementation can interface with code written in C, and the JRuby implementation runs on the JVM and (like Clojure and Scala) can call Java code in the same process. If you should need a language that can be run on both platforms and support both FP and OOP, Ruby could be a great choice.