This document discusses functional programming concepts in Groovy including closures, iterators, streams, partial evaluation, composition, memoization, and tail calls. It provides examples of using Groovy functionally to solve problems like finding the cheapest/most expensive beer in a list and getting total price. While Groovy closures act like functions, they are not inherently side effect free. Libraries like GPars and functionaljava help add functional capabilities to Groovy like parallel collections, monads, and streams.