John McCarthy (Inventor of Lisp) says "PROGRAMMING, you're doing it completely wrong!"
"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

"...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.
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?
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.

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 programmerstinkerers, 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.
May
20
This month we'll be continuing the battleships saga from last month.

We'll be pairing up to do some more work on our battleships admirals.

Meeting @madlab at the usual time of 7pm.
Apr
15
Following last months battleship walk through, this month the Lambda Lounge will engage in all out war.  We will be implementing battleship admirals in Clojure, and competing them head to head for complete supremacy of the battleship warzone (server).

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.

Kaboom
Mar
18
This month we'll be meeting at number 44 Edge street (Madlab's other building, just next door to Madlab) at the usual time of 7pm.

KaboomSimon 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
We'll be meeting on the 18th February at the usual time of 7pm for a relatively informal session of show and tell.

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
We'll be gathering on the 21st January for our first meeting of the new year, to talk about functional data-structures.

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
Meeting at @madlabuk at 7pm, this monday we will be continuing last months code dojo, by hacking on our implementations of Conway's game of life, in your favourite functional language.

The glider pattern found in Conways Game of Life
We will be pair programming, so bring a laptop!
Nov
19
Meeting at the usual time of 7pm @madlabuk, this monday will be the Lambda Lounge's first code dojo, where we look at implementing Conway's Game of Life, in your favourite functional language.

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.
The glider pattern found in Conways Game of Life
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.

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.

Download

APR
16
Come join us in a utopian land of parentheses as we take a whistle stop tour of the Clojure programming language.  A powerful modern dialect of Lisp, reloaded for the JVM, CLR and JavaScript VM's to provide a practical and general purpose functional language.

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.
Photograph of our first meeting
@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.

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.

e.g. Haskell Curry
e.g. curry@omnomnom.org
e.g. Monads are simples!
e.g. as they're just Monoids in the category of endofunctors...