MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Imperative Functional Programming (1993) [1126 citations — 35 self]

Abstract:

We present a new model, based on monads, for performing input/output in a non-strict, purely functional language. It is composable, extensible, efficient, requires no extensions to the type system, and extends smoothly to incorporate mixed-language working and in-place array updates. 1 Introduction Input/output has always appeared to be one of the less satisfactory features of purely functional languages: fitting action into the functional paradigm feels like fitting a square block into a round hole. Closely related difficulties are associated with performing in-place update operations on arrays, and calling arbitrary procedures written in some other (possibly side-effecting) language. Some mostly-functional languages, such as Lisp or SML, deal successfully with input/output by using side effects. We focus on purely-functional solutions, which rule out side effects, for two reasons. Firstly, the absence of side effects permits unrestricted use of equational reasoning and program trans...

Citations

3915 Design Patterns: Elements of Reusable Object-Oriented Software – Gamma, Helm, et al. - 1995
1420 The definition of Standard ML – Milner, Tofte, et al. - 1990
528 Categories for the working mathematician – Lane
389 Comprehending Monads – Wadler - 1990
347 Computational lambda-calculus and monads – Moggi - 1989
339 ML for the Working Programmer – Paulson - 1991
330 Introduction to higher order categorical logic – Lambek, Scott - 1986
294 Pizza into Java: Translating theory into practice – Odersky, Wadler - 1997
225 Call-by-name, call-by-value, and the -calculus – Plotkin - 1975
224 Definitional interpreters for higher-order programming languages – Reynolds - 1972
131 The essence of Algol – Reynolds - 1981
119 Abstract Interpretation of Declarative Languages – Abramsky, Hankin - 1987
101 closure-passing style – Appel, Jim, et al. - 1989
101 Algebraic reconstruction of types and effects – JOUVELOT, GIFFORD - 1991
93 Preliminary Design of the Programming Language Forsythe – Reynolds - 1988
87 An overview of miranda – Turner - 1986
82 Typing first-class continuations in ML – Duba, Harper, et al. - 1991
77 How to replace failure by a list of successes – Wadler - 1985
68 Single-threaded polymorphic lambda calculus – Guzm'an, Hudak - 1990
63 Abstracting control – Danvy, Filinski - 1990
63 editors). Report on the Programming Language Haskell, A Non-strict Purely Functional Language (Version 1.2 – Hudak, Jones, et al. - 1992
55 Integrating functional and imperative programming – Gifford, Lucassen - 1986
54 Detecting global variables in denotational specifications – Schmidt - 1985
51 Using category theory to design implicit conversions and generic operators – Reynolds - 1980
45 The essence of functional programming (Invited talk – Wadler - 1992
38 A functional theory of exceptions – Spivey - 1990
34 the ultimate imperative – Sussman, Lambda - 1976
32 Assignments for applicative languages – Swarup, Reddy, et al. - 1991
29 Update analysis and the efficient implementation of functional aggregates – Bloss - 1989
27 and Yannis Smaragdakis. Functional programming in C – McNamara - 2000
24 A framework for higher-order functions in C – Läufer - 1995
22 The coherence of languages with intersection types – Reynolds - 1991
21 A semantic model of reference counting and its abstraction (detailed summary – Hudak - 1986
16 Continuation-based mutable abstract data types, or how to have your state and munge it too – Hudak - 1992
11 Syntactic control of interference, part II – Reynolds - 1989
8 FACT! – the functional side of C++. http://www.fz-juelich.de/zam/FACT – Striegnitz - 2003
7 a continuation extension for – Perry, HopeC - 1987
3 An abstract view of programming languges. Course notes – Moggi
1 Bridging Functional and Object-Oriented Programming” Georgia Tech CoC – Smaragdakis, McNamara
1 A type checker. Chapter 9 of Simon Peyton Jones, The Implementation of Functional Programming Languages – Hancock - 1987
1 there a use for linear logic – Is - 1991