Applicative programming with effects

Conor Mcbride, Ross Paterson

Research output: Contribution to journalArticle

218 Citations (Scopus)

Abstract

In this article, we introduce Applicative functors – an abstract characterisation of an applicative style of effectful programming, weaker than Monads and hence more widespread. Indeed, it is the ubiquity of this programming pattern that drew us to the abstraction. We retrace our steps in this article, introducing the applicative pattern by diverse examples, then abstracting it to define the Applicative type class and introducing a bracket notation that interprets the normal application syntax in the idiom of an Applicative functor. Furthermore, we develop the properties of applicative functors and the generic operations they support. We close by identifying the categorical structure of applicative functors and examining their relationship both with Monads and with Arrow.
LanguageEnglish
Pages1-13
Number of pages13
JournalJournal of Functional Programming
Volume18
Issue number1
Early online date16 May 2007
DOIs
Publication statusPublished - 2008

Cite this

Mcbride, Conor ; Paterson, Ross. / Applicative programming with effects. In: Journal of Functional Programming. 2008 ; Vol. 18, No. 1. pp. 1-13.
@article{d493826a96a0455ba69a4a2f8c32249e,
title = "Applicative programming with effects",
abstract = "In this article, we introduce Applicative functors – an abstract characterisation of an applicative style of effectful programming, weaker than Monads and hence more widespread. Indeed, it is the ubiquity of this programming pattern that drew us to the abstraction. We retrace our steps in this article, introducing the applicative pattern by diverse examples, then abstracting it to define the Applicative type class and introducing a bracket notation that interprets the normal application syntax in the idiom of an Applicative functor. Furthermore, we develop the properties of applicative functors and the generic operations they support. We close by identifying the categorical structure of applicative functors and examining their relationship both with Monads and with Arrow.",
author = "Conor Mcbride and Ross Paterson",
year = "2008",
doi = "10.1017/S0956796807006326",
language = "English",
volume = "18",
pages = "1--13",
journal = "Journal of Functional Programming",
issn = "0956-7968",
number = "1",

}

Applicative programming with effects. / Mcbride, Conor; Paterson, Ross.

In: Journal of Functional Programming, Vol. 18, No. 1, 2008, p. 1-13.

Research output: Contribution to journalArticle

TY - JOUR

T1 - Applicative programming with effects

AU - Mcbride, Conor

AU - Paterson, Ross

PY - 2008

Y1 - 2008

N2 - In this article, we introduce Applicative functors – an abstract characterisation of an applicative style of effectful programming, weaker than Monads and hence more widespread. Indeed, it is the ubiquity of this programming pattern that drew us to the abstraction. We retrace our steps in this article, introducing the applicative pattern by diverse examples, then abstracting it to define the Applicative type class and introducing a bracket notation that interprets the normal application syntax in the idiom of an Applicative functor. Furthermore, we develop the properties of applicative functors and the generic operations they support. We close by identifying the categorical structure of applicative functors and examining their relationship both with Monads and with Arrow.

AB - In this article, we introduce Applicative functors – an abstract characterisation of an applicative style of effectful programming, weaker than Monads and hence more widespread. Indeed, it is the ubiquity of this programming pattern that drew us to the abstraction. We retrace our steps in this article, introducing the applicative pattern by diverse examples, then abstracting it to define the Applicative type class and introducing a bracket notation that interprets the normal application syntax in the idiom of an Applicative functor. Furthermore, we develop the properties of applicative functors and the generic operations they support. We close by identifying the categorical structure of applicative functors and examining their relationship both with Monads and with Arrow.

U2 - 10.1017/S0956796807006326

DO - 10.1017/S0956796807006326

M3 - Article

VL - 18

SP - 1

EP - 13

JO - Journal of Functional Programming

T2 - Journal of Functional Programming

JF - Journal of Functional Programming

SN - 0956-7968

IS - 1

ER -