"The problem with object-oriented languages is the implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle."
- Joe Armstrong
"There is a continuum of value in how pure a function is, and the value step from almost-pure to completely-pure is smaller than that from spaghetti-state to mostly pure."
- John Carmack
"There is a continuum of value in how pure a function is, and the value step from almost-pure to completely-pure is smaller than that from spaghetti-state to mostly pure."
- John Carmack
"...any
new class is itself an island; unusable by any existing code written by
anyone, anywhere. So consider throwing the baby out with the bath
water."- Rich Hickey
"Lisp has jokingly been called 'the most intelligent way to
misuse a computer'. I think that description is a great compliment
because it transmits the full flavor of liberation: it has assisted a
number of our most gifted fellow humans in thinking previously
impossible thoughts."
- Edsger Dijkstra
Join the renaissance!
There are dozens of functional programming languages, and they can be as different from each other as Ruby and Cobol; however as a family they tend to:
Emphasise the application and composition of functions, over the imperative mutation of state. Consequently functional programs are shorter and easier to reason about.
Prefer pure values over mutable objects. Values never change, so programs using values are safer and easier to reason about.
Treat functions as first-class values, allowing them to be passed as arguments and returned from functions. Higher order functions such as these enable powerful new abstractions.
Treat functions as first-class values, allowing them to be passed as arguments and returned from functions. Higher order functions such as these enable powerful new abstractions.
Focus on the primacy of data, rather than hiding it behind unwieldly classes.
Manage side effects more cleanly meaning less state and fewer bugs.
Be thread safe by default, without having to resort to locks which fail to compose.
Be a proving ground for awesome features. Garbage Collection, Closures, Continuations, Monads, Expression orientation, Lexical Scope, and Software Transactional Memories all made it into functional languages years before they were mainstream. What are you still missing?
Manage side effects more cleanly meaning less state and fewer bugs.
Be thread safe by default, without having to resort to locks which fail to compose.
Be a proving ground for awesome features. Garbage Collection, Closures, Continuations, Monads, Expression orientation, Lexical Scope, and Software Transactional Memories all made it into functional languages years before they were mainstream. What are you still missing?
Functional programming is not only on the cutting edge of computer science research, but it's being adopted by a leaner generation of startups who are innovating faster than their competitors.
A new generation of functional languages like F#, Scala and Clojure, are giving developers the ability to run functional languages on the runtime environment of their choice (.Net, JVM or Javascript), whilst traditional functional languages like Haskell, Scheme, Erlang and O-Caml continue to develop the state of the art in type systems, language features, compilers, and fault tolerant systems.
A new generation of functional languages like F#, Scala and Clojure, are giving developers the ability to run functional languages on the runtime environment of their choice (.Net, JVM or Javascript), whilst traditional functional languages like Haskell, Scheme, Erlang and O-Caml continue to develop the state of the art in type systems, language features, compilers, and fault tolerant systems.
Come to a meeting
The Lambda Lounge is proud to be one of @madlabuk's regular groups.
They provide us and others with a vibrant community space to make interesting stuff. They're a place for geeks, artists, designers, illustrators, hackers, functional programmers, tinkerers, innovators and idle dreamers.
They provide us and others with a vibrant community space to make interesting stuff. They're a place for geeks, artists, designers, illustrators, hackers, functional programmers, tinkerers, innovators and idle dreamers.
They're also an autonomous R&D laboratory and a release valve for Manchester's creative communities. But most of all, they're really cool friends!
We meet regularly, for talks and practical sessions. Meetings are usually on the second Monday of the month at 7pm, though for practical reasons this is not always possible. So it is best to check here and keep an eye on our Google Group for announcements.
We meet regularly, for talks and practical sessions. Meetings are usually on the second Monday of the month at 7pm, though for practical reasons this is not always possible. So it is best to check here and keep an eye on our Google Group for announcements.
May
20
We'll be pairing up to do some more work on our battleships admirals.
Meeting @madlab at the usual time of 7pm.
Apr
15
We will be meeting at the usual time of 7pm. Be sure to either pair up or bring a laptop for some head to head coding! It will help if you can setup a working Clojure environment beforehand.

Mar
18
Simon Holgate will be talking us through using battleships as a fun and interactive way of learning functional programming with Clojure. This month he'll be walking us through the setup, and diving into the implementation code. A future Lambda Lounge will see us compete our battleships head to head.James Jeffries will also briefly be telling us about the Functional Programming exchange, and some of the interesting developments with GADT's in Haskell, Scala's Lift 3.0, and functional event sourcing. Some of which he hopes to talk about more formally at a future Lambda Lounge.
Feb
18
Rick will be giving us a taster of the magical world of Logic Programming with Clojure's core.logic. In this world programs can run both forwards and backwards, with surprising and powerful consequences.
Daniel Silverstone will be talking with us about a Haskell project of his where he's been trying to tie knots in functional data structures, use parser combinators and implement mini imperative Domain Specific Languages.
If you've got something functional you'd like to speak about, or ask advice on; come along, as the Lambda Lounge loves to listen!
Jan
21
Additionally we'll be continuing with personal projects; such as our Conway's Game of Life implementations from last year.
We will be starting at 7pm @madlabuk as usual.
Dec
17

We will be pair programming, so bring a laptop!
Nov
19
Conway's game of life, shot to fame in the 1970's for showing how astonishing complexity; similar to that shown in nature can arise from a handful of simple deterministic rules.

Just like a butterfly flapping its wings, the smallest change to a cell in life can have massive unpredictable effects resulting in chaos within an entirely orderly world.
Not only does life have a lot to teach us about the nature of reality it has a strong history in theories of computation, with it being provable turing complete.
More importantly however life is fun, and should be a great starter project to learn a functional language such as Haskell or Clojure.
We will be pair programming, so bring a laptop!
Oct
15
Software Transactional Memory
This month's lambda lounge sees Haskell enthusiast and developer Lee Kitching, talking about Haskell's Software Transactional Memory. We will be meeting at the usual time of 7pm.The traditional approach to concurrency uses locks to co-ordinate access to shared state. This approach is flawed in a number of ways:
1: It requires a global ordering on lock acquisition to prevent deadlock
2: It is difficult to maintain consistency in the face of errors
3: Lock granularity has a significant impact on scalability.
Transactional memory systems allow accesses to
shared memory to be defined within atomic transactions whose effects are
isolated from any concurrently executing transactions.
Haskell's
STM system leverages the Haskell type system to permit access to shared
state only within transactions. It allows transactions to be composed
by automatically handling transaction scheduling, isolation, execution
and rollback in the event of errors.
The talk will introduce Haskell's STM system, and show how it can be used to greatly simplify some concurrent programming tasks.
Sep
10
James Jeffries will be giving this months talk on F# (F-Sharp). F# is a functional language that runs on the .NET runtime. Unlike
other languages such as Haskell it is not purely functional and also has
support for imperative and object oriented programming. F# is open
source and has been officially supported in Visual Studio since 2010,
but it can also run on the Mono runtime.
This talk will include a brief overview of the syntax, some basic examples of how to do common functional and object oriented tasks, and demonstrate a more in depth example showing off some of the cooler features and (hopefully) the elegance of F#.
If anyone wants to try out example as we go through then please bring your laptop, install F# and the F# power pack.
Aug
13
An Introduction to applicative functors in Haskell
This months talk, graciously hosted by Madab @7pm will be given by Ian Murray, and should be a real hit as he hopes to cover some of the core theoretical concepts found in Haskell.
Applicative functors are an abstraction that sit between functors and monads: weaker (hence more widely occurring) than monads, and stronger than functors.
Applicative functors are an abstraction that sit between functors and monads: weaker (hence more widely occurring) than monads, and stronger than functors.
This practical talk will be split into two parts:
1. An introduction to the definition of the Applicative type class. Will show some examples of Applicative instances to get a feel for it. And then discuss how it's used; and how it achieves what a Functor can't.
2. Will look at the
applicative-style of programming in Haskell, using user input validation
as an example of this (including a
brief detour to introduce the Monoid type class).
The slides for this talk are available here.
This meeting was on the 28th May featured an introductory talk on Haskell, by Ian Johnson.

Haskell is a purely functional programming language, where side-effects are forbidden by the type-system; and all functions must be pure.
Haskell's widely regarded as being on the cutting edge of programming language design, with its rigorous Hindley-Milner inferencing type system, lazy evaluation and infamous use of an obscure branch of abstract nonsense (category theory).
Haskell is best known for it's ability to lock up side effects where they belong, in an IO::Monad; preventing them from polluting your program with pain and non-determinism.The slides for this talk can be downloaded below.

Haskell is a purely functional programming language, where side-effects are forbidden by the type-system; and all functions must be pure.
Haskell's widely regarded as being on the cutting edge of programming language design, with its rigorous Hindley-Milner inferencing type system, lazy evaluation and infamous use of an obscure branch of abstract nonsense (category theory).
Haskell is best known for it's ability to lock up side effects where they belong, in an IO::Monad; preventing them from polluting your program with pain and non-determinism.The slides for this talk can be downloaded below.
APR
16
After learning its syntax, semantics and special forms in Clojure's interactive development environment you'll free your mind of mutable thoughts and seek enlightenment with Value Oriented Programming; the secret behind safe and efficient concurrent programming with Clojure.
You'll discover how laziness is a virtue with Clojure's powerful sequence API, learn how to embrace the worlds largest set of open source class libraries with the most native foreign function interface ever defined, and take a look at how in Clojure code is data; allowing you to extend the Compiler and the language to better solve problems in your domain.
By the end of this session, you'll begin to appreciate how you might use Clojure to tackle programming problems with less ceremony, incidental complexity and a greater degree of expressiveness.
About us
The λ lounge meets monthly to talk about and popularise functional programming. We are language agnostic, but only try and host talks and events of direct interest to the functional programming community.
We were born from the Manchester Clojure Dojo, when we decided there would be more demand for a broader group focusing on functional programming in general. We asked politely and took the name from the American revolutionaries, of the orignal Lambda Lounge in St Louis. Our logo was designed by the incredibly talented @hltn.
We were born from the Manchester Clojure Dojo, when we decided there would be more demand for a broader group focusing on functional programming in general. We asked politely and took the name from the American revolutionaries, of the orignal Lambda Lounge in St Louis. Our logo was designed by the incredibly talented @hltn.
@RickMoynihan introducing @SimonHolgate's talk on ClojureScript at the first Manchester Lambda Lounge.
Come along...
to a meeting and join our Google Group!
Join our Google Group, and participate in Manchester's premiere (it's easy when you're the only one) Functional Programming community.
Joining the Google Group is the best way to stay informed on our future meetings, follow up with people after our events, and to help us plan future meetings.
Joining the Google Group is the best way to stay informed on our future meetings, follow up with people after our events, and to help us plan future meetings.
Want to talk?
If you want to talk then there's a good chance the Lambda Lounge will want to listen!
Our main focus is on functional programming, esoteric languages & computer science, however we're a diverse group so if you want to talk the chances are we'll want to listen!
You can submit ideas for talks, either through the form on the right or our Google Group.