background preloader

Functional Programming

Facebook Twitter

HEAT: The Haskell Educational Advancement Tool - School of Computing - University of Kent. Using a separate editor and interpreter provides many distracting obstacles for inexperienced students learning a programming language.

HEAT: The Haskell Educational Advancement Tool - School of Computing - University of Kent

Professional interactive development environments, however, confuse and distract with their excessive features. Hence Heat was designed for novice students learning the functional programming language Haskell. Based on teaching experience, Heat provides a small number of supporting features, especially for testing, and is easy to use. Heat is portable, small and works on top of the Haskell interpreter GHCi. Heat has been used in teaching functional programming at the University of Kent since 2006.

Requirements met by Heat Features Download Version 5.05 Heat505.jar [1] [29 April 2013]. Documentation Installation and basic use instructions [2] Development History Version 5.05: Bug fixes and improvements related to the console and the editor. Learn You a Haskell for Great Good! Purely Functional Configuration Management with Nix and NixOS. Configuration management is the foundation that makes modern infrastructure possible.

Purely Functional Configuration Management with Nix and NixOS

Tools that enable configuration management are required in the toolbox of any operations team, and many development teams as well. Although all the tools aim to solve the same basic set of problems, they adhere to different visions and exhibit different characteristics. The issue is how to choose the tool that best fits each organization's scenarios. This InfoQ article is part of a series that aims to introduce some of the configuration tools on the market, the principles behind each one and what makes them stand out from each other. You can subscribe to notifications about new articles in the series here. Books. Books covering many aspects of Haskell. 1 Language and library definition Simon Peyton Jones: "Haskell 98 language and libraries: the Revised Report", Cambridge University Press, 2003, Hardback, 272 pages, ISBN 0521826144, £45.00 Book Description Haskell is the world's leading lazy functional programming language, widely used for teaching, research, and applications.

Books

Arrows: A General Interface to Computation. Arrows are a new abstract view of computation, defined by John Hughes [Hug00]. They serve much the same purpose as monads -- providing a common structure for libraries -- but are more general. In particular they allow notions of computation that may be partially static (independent of the input) or may take multiple inputs. If your application works fine with monads, you might as well stick with them. But if you're using a structure that's very like a monad, but isn't one, maybe it's an arrow. Functional programming - Getting started with Haskell. Yet Another Monad Tutorial in 15 Minutes - Carpe diem (Felix's blog) Functional programming has become popular these days, but unlike object-oriented languages, each FP language is so different from the other.

Yet Another Monad Tutorial in 15 Minutes - Carpe diem (Felix's blog)

Some of these use strict evaluation while others use lazily evaluated models; tons of new concurrent models were introduced; further more, states are handled differently too. Haskell, for example, does not have states, but uses its powerful type system to construct the stateful program flow normally used in other languages. As you might guess, Monad is one of the type that does the trick. Defining a Monad type is pretty much like defining a class in an object oriented language. Wadler: Monads. Philip Wadler The arrow calculus Sam Lindley, Philip Wadler, and Jeremy Yalloop, Journal of Functional Programming 20(1):51&em;69, 2010.

Wadler: Monads

We introduce the arrow calculus, a metalanguage for manipulating Hughes’s arrows with close relations both to Moggi’s metalanguage for monads and to Paterson’s arrow notation. Arrows are classically defined by extending lambda calculus with three constructs satisfying nine (somewhat idiosyncratic) laws; in contrast, the arrow calculus adds four constructs satisfying five laws (which fit two well-known patterns).

The five laws were previously known to be sound; we show that they are also complete, and hence that the five laws may replace the nine. Available in: pdf, doi. Monadic constraint programming. You Could Have Invented Monads! (And Maybe You Already Have.) If you hadn't guessed, this is about monads as they appear in pure functional programming languages like Haskell.

You Could Have Invented Monads! (And Maybe You Already Have.)

They are closely related to the monads of category theory, but are not exactly the same because Haskell doesn't enforce the identities satisfied by categorical monads. Writing introductions to monads seems to have developed into an industry. There's a gentle Introduction, a Haskell Programmer's introduction with the advice "Don't Panic", an introduction for the "Working Haskell Programmer" and countless others that introduce monads as everything from a type of functor to a type of space suit. Monads for the Curious Programmer, Part 1. The Monad is like a bellows: it is empty yet infinitely capable.

Monads for the Curious Programmer, Part 1

The more you use it, the more it produces; the more you talk about it, the less you understand. Haskell News. Starting with Haskell. Channel 9: Videos about the people building Microsoft Products & Services. Learn You a Haskell for Great Good! Real World Haskell. C9 Lectures: Dr. Erik Meijer. C9 Lectures: Erik Meijer - Functional Programming Fundamentals. Brian Beckman. Brian Beckman: Don't fear the Monad. Brian Beckman: The Zen of Stateless State - The State Monad.