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