Nothing Special   »   [go: up one dir, main page]

Skip to content
Robert Peszek edited this page Oct 3, 2013 · 11 revisions

This project has been moved from http://code.google.com/p/fpiglet/. Some parts of the move (like GrovyDoc) still need to be moved over.

FUNctional Programming in Groovy. It will not make Groovy into Haskell but hopefully will lead to more FUN(ctional) coding. The goal of this project is to bring some of the power and beauty of functional programming into Groovy.

Fpiglet is my hobby project, but I hope I will become more than one guy passion at some point. It has been a late-night/weekend endeavor and I apologize for typos and somewhat chaotic documentation.

Release 0.1 TOC:

Functional Programming is a vast and the version number 0.1 was selected to signify that there is a lot of territory left to be explored.

At this point, I would like to see if there is much interest within Groovy community in more serious FP before continuing with Fpiglet 0.2.

Warning:

Fpiglet is not about methods, it is about Closures. Method 'oriented' OO coding will be limited with Fpiglet. I believe that function composition is a much better concept than any 'fluent interface'.

Moving away from methods to closures has many benefits. Closures are 'pieces of code' and first-class language citizens. This allows Fpiglet to define higher level concepts which 'act' on these pieces of code. Functor, Applicative, and Monad can all be viewed as Combinator Libraries. These 'Libraries' not only 'act' on Closures, but are implemented as a bunch of Closures themselves.

Moving away from methods and taking FP, Combinator Library point of view yields cleaner and more polymorphic code.

Dependencies:

Fpiglet is using Groovy 2.0 (but it should work fine on 1.8) and JUnit4.

Gruesome: Fpiglet source tree: ext/gruesome includes a slightly modified (and currently not forked) copy of https://github.com/mcandre/gruesome together with its own (FreeBSD) license file. Gruesome is a simplified version of QuickCheck Property-based Testing library ported to Groovy. (Integration of Property-based testing into Fpiglet is work in progress and will improve in the future).

Eclipse project file is included. If you prefer IDE agnostic build tool, gradle build file is included as well (GradleBuild).

Where to go from here?

Thanks for visiting.

Robert Peszek

Clone this wiki locally