Results 1  10
of
437
Comprehending Monads
 Mathematical Structures in Computer Science
, 1992
"... Category theorists invented monads in the 1960's to concisely express certain aspects of universal algebra. Functional programmers invented list comprehensions in the 1970's to concisely express certain programs involving lists. This paper shows how list comprehensions may be generalised t ..."
Abstract

Cited by 522 (16 self)
 Add to MetaCart
Category theorists invented monads in the 1960's to concisely express certain aspects of universal algebra. Functional programmers invented list comprehensions in the 1970's to concisely express certain programs involving lists. This paper shows how list comprehensions may be generalised to an arbitrary monad, and how the resulting programming feature can concisely express in a pure functional language some programs that manipulate state, handle exceptions, parse text, or invoke continuations. A new solution to the old problem of destructive array update is also presented. No knowledge of category theory is assumed.
Computational LambdaCalculus and Monads
, 1988
"... The calculus is considered an useful mathematical tool in the study of programming languages, since programs can be identified with terms. However, if one goes further and uses fijconversion to prove equivalence of programs, then a gross simplification 1 is introduced, that may jeopardise the ..."
Abstract

Cited by 505 (7 self)
 Add to MetaCart
The calculus is considered an useful mathematical tool in the study of programming languages, since programs can be identified with terms. However, if one goes further and uses fijconversion to prove equivalence of programs, then a gross simplification 1 is introduced, that may jeopardise the applicability of theoretical results to real situations. In this paper we introduce a new calculus based on a categorical semantics for computations. This calculus provides a correct basis for proving equivalence of programs, independent from any specific computational model. 1 Introduction This paper is about logics for reasoning about programs, in particular for proving equivalence of programs. Following a consolidated tradition in theoretical computer science we identify programs with the closed terms, possibly containing extra constants, corresponding to some features of the programming language under consideration. There are three approaches to proving equivalence of programs: ffl T...
Domain Theory
 Handbook of Logic in Computer Science
, 1994
"... Least fixpoints as meanings of recursive definitions. ..."
Abstract

Cited by 546 (25 self)
 Add to MetaCart
Least fixpoints as meanings of recursive definitions.
A Computational Formalization for Partial Evaluation (Extended Version)
, 1996
"... We formalize a partial evaluator for Eugenio Moggi's computational metalanguage. This formalization gives an evaluationorder independent view of bindingtime analysis and program specialization, including a proper treatment of call unfolding, and enables us to express the essence of " ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
We formalize a partial evaluator for Eugenio Moggi's computational metalanguage. This formalization gives an evaluationorder independent view of bindingtime analysis and program specialization, including a proper treatment of call unfolding, and enables us to express the essence of "
A Core Calculus of Dependency
 IN PROC. 26TH ACM SYMP. ON PRINCIPLES OF PROGRAMMING LANGUAGES (POPL
, 1999
"... Notions of program dependency arise in many settings: security, partial evaluation, program slicing, and calltracking. We argue that there is a central notion of dependency common to these settings that can be captured within a single calculus, the Dependency Core Calculus (DCC), a small extension ..."
Abstract

Cited by 257 (25 self)
 Add to MetaCart
of Moggi's computational lambda calculus. To establish this thesis, we translate typed calculi for secure information flow, bindingtime analysis, slicing, and calltracking into DCC. The translations help clarify aspects of the source calculi. We also define a semantic model for DCC and use
MetaML and MultiStage Programming with Explicit Annotations
 Theoretical Computer Science
, 1999
"... . We introduce MetaML, a practicallymotivated, staticallytyped multistage programming language. MetaML is a "real" language. We have built an implementation and used it to solve multistage problems. MetaML allows the programmer to construct, combine, and execute code fragments in a ..."
Abstract

Cited by 299 (33 self)
 Add to MetaCart
. We introduce MetaML, a practicallymotivated, staticallytyped multistage programming language. MetaML is a "real" language. We have built an implementation and used it to solve multistage problems. MetaML allows the programmer to construct, combine, and execute code fragments in a typesafe manner. Code fragments can contain free variables, but they obey the staticscoping principle. MetaML performs typechecking for all stages once and for all before the execution of the first stage. Certain anomalies with our first MetaML implementation led us to formalize an illustrative subset of the MetaML implementation. We present both a bigstep semantics and type system for this subset, and prove the type system's soundness with respect to a bigstep semantics. From a software engineering point of view, this means that generators written in the MetaML subset never generate unsafe programs. A type system and semantics for full MetaML is still ongoing work. We argue that multi...
Constructing a QuasiUniform Function Space
, 1993
"... This paper attacks the problem of constructing function spaces for a convenient class of quasiuniform spaces. As, for the sake of completeness, multivalued functions have to be considered, we define a suitable power space functor. The arising monad is a computational monad in the sense of Eugenio ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
This paper attacks the problem of constructing function spaces for a convenient class of quasiuniform spaces. As, for the sake of completeness, multivalued functions have to be considered, we define a suitable power space functor. The arising monad is a computational monad in the sense of Eugenio
Preface
"... withtherightcombinationofintellectualfreedomandstimulation,forthisworkto emerge.TheyearsinNijmegenhavebeenverypleasantones,duealsototheother Acknowledgements membersofthe\lambdagroup".Ithankallofthemfortheirpersonalcontribution. ThersttobementionedhereisHenkBarendregt.Heprovidedanatmosphere myw ..."
Abstract
 Add to MetaCart
HenkBarendregt.Heprovidedanatmosphere myworkwerebothsharpandconstructive.Theyresultedinmanyimprovements, notablyinchapters1and4. Secondly,IwishtoexpressmyindebtednesstoIekeMoerdijk.Hiscommentson AndyPittsandThomasStreicher.AmongtheseIwanttosingleoutEugenioand MartinHyland,GiuseppeLongo,SimoneMartini,EugenioMoggi,DuskoPavlovic, theory
unknown title
"... Monads are a general mechanism for extending functional languages with new features. They were introduced in the context of functional programming by Eugenio Moggi [2] and are by now regarded as a central tool of the functional language Haskell. There are literally dozens of tutorials available on t ..."
Abstract
 Add to MetaCart
Monads are a general mechanism for extending functional languages with new features. They were introduced in the context of functional programming by Eugenio Moggi [2] and are by now regarded as a central tool of the functional language Haskell. There are literally dozens of tutorials available
unknown title
"... Monads are a general mechanism for extending functional languages with new features. They were introduced in the context of functional programming by Eugenio Moggi [Mog91] and are by now regarded as a central tool of the functional language Haskell. There are literally dozens of tutorials available ..."
Abstract
 Add to MetaCart
Monads are a general mechanism for extending functional languages with new features. They were introduced in the context of functional programming by Eugenio Moggi [Mog91] and are by now regarded as a central tool of the functional language Haskell. There are literally dozens of tutorials available
Results 1  10
of
437