Friday, December 28, 2012

Jan 8 Meeting Programming with Monads

Presenter: Roshan Shariff

Title: Programming with Monads

When: January 8th @ 6:00 pm in CSC 3-49 (1 floor above our usual floor)

When you write a program, you probably want it to do things like talking to the Internet, displaying images, or even just reading and writing files and accepting input. It's hard to imagine how any of these could be encoded into pure mathematical functions which simply take an input, produce an output, and have no other side effects. So if you're programming in a pure functional language like Haskell, how do you write programs that do interesting things?
Somewhat surprisingly, it turns out that all of these things and more can be embedded inside a pure functional language using a concept called a "monad". In this talk I will describe what monads are and how they are used. We will see how different monads correspond to different notions of computation, including but not limited to input/output and side effects. We will focus on the idea that a monad is just a software design pattern that can be used to structure code in an easy-to-use way.

There are no prerequisites for this talk. Some background in functional programming would be useful, but I'll explain the basics as I go along. I will be using Haskell, but you won't need any prior knowledge of it to understand the material. Monads have become so popular, in fact, that a quick Google search will turn up implementations in languages like C++, Java, and Javascript. We will discuss how monads and similar ideas are powerful tools to think about and write better code in any language.

Slides:  https://docs.google.com/file/d/0B5iw-UVgBBQRbHBSaC1EUEhBbDQ/edit PDF

Tuesday, November 20, 2012

Next Meeting, Dec 4: Why FP Matters

Our next meeting is at 18:00 (6pm) December 4 2012 (2012/12/04) in
room CSC 2-49 in the Computer Science building at the University of Alberta.

Justin Bogner will be presenting the ideas from John Hughes' paper,
Why Functional Programming Matters. This paper, which dates from
1984, offers solid rationale for why functional programming is
relevant to the real world and makes points on how to structure
functional programs that are still very relevant and helpful today.

Have you ever noticed that functional programming is usually described
by what it doesn't have? Do you wonder how there being "no assignment
statements" and "no side effects" could possibly be an advantage in
real programs? In this talk we'll show how features enabled by these
constraints, notably higher order functions and lazy evaluation, make
significant contributions to modularity and composability. We'll go
through examples of these in order to illustrate the power that they
bring to languages such as Haskell.

Tuesday, November 6, 2012

Notes from OCaml Presentation

Many people attended! Justin agreed to give a talk about functional programming in general and the principles of functional programming for Dec.4th!

The slides ( PDF )  and source code to the slides may be found here:
https://github.com/abramhindle/ocaml-presentation ( PDF )

Sunday, October 28, 2012

Next Meeting: Introduction to OCaml

Our next meeting is at 18:00 (6pm) November 6th 2012 (2012/11/06) in room CSC 2-49 in the Computer Science building at the University of Alberta.

Abram Hindle will be introducing and demonstrating the OCaml language (wikipedia). If you have an interest in functional programming languages like Haskell but are looking for more strictness perhaps OCaml will interest you?

Inspired by SML but with some OO thrown in, OCaml offers modularity both in terms of module composition and object oriented structures.

So please join us for an introduction to OCaml and some of the SML philosophy. OCaml gives you the option of a non-lazy (strict) staticly-typed, typed-inferenced, functional language.

The Edmonton Functional Programming User's Group (EFPUG) is a group of Edmontonians dedicated to discussing, learning and teaching about functional programming languages such as Haskell, Scheme, Scala, SML, OCaml, and the functional parts of other languages such as Go, Javascript, Python, Perl or Ruby. EFPUG meets monthly on the first Tuesday of month.

Consider joining our Mailinglist  https://groups.google.com/forum/#!forum/edmonton-functional-programming-users-group

Tuesday, October 2, 2012

Welcome to the new home of EFPUG

We've moved to blogspot to organize all our efforts on github, google groups, google calendar and other services. This will likely be the permanent hub of the Edmonton Functional Programmers User Group.

Feel free to follow our RSS feed and to subscribe to our calendar!