Global variables in Haskell

  • Authors:
  • John Hughes

  • Affiliations:
  • Department of Computing Science, Chalmers University of Technology, S-412 96 Göteborg, Sweden (e-mail: rjmh@cs.chalmers.se)

  • Venue:
  • Journal of Functional Programming
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

Haskell today provides good support not only for a functional programming style, but also for an imperative one. Elements of imperative programming are needed in applications such as web servers, or to provide efficient implementations of well-known algorithms, such as many graph algorithms. However, one element of imperative programming, the global variable, is surprisingly hard to emulate in Haskell. We discuss several existing methods, none of which is really satisfactory, and finally propose a new approach based on implicit parameters. This approach is simple, safe, and efficient, although it does reveal weaknesses in Haskell's present type system.