Results 1 
8 of
8
Understanding and Evolving the ML Module System
, 2005
"... 0121633. Any opinions, findings, and conclusions or recommendations in this publication are those of the author and do not reflect the views of these agencies. Keywords: ML, module systems, type systems, functors, abstract data types, lambda calculus, The ML module system stands as a highwater mark ..."
Abstract

Cited by 44 (18 self)
 Add to MetaCart
(Show Context)
0121633. Any opinions, findings, and conclusions or recommendations in this publication are those of the author and do not reflect the views of these agencies. Keywords: ML, module systems, type systems, functors, abstract data types, lambda calculus, The ML module system stands as a highwater mark of programming language support for data abstraction. Nevertheless, it is not in a fully evolved state. One prominent weakness is that module interdependencies in ML are restricted to be acyclic, which means that mutually recursive functions and data types must be written in the same module even if they belong conceptually in different modules. Existing efforts to remedy this limitation either involve drastic changes to the notion of what a module is, or fail to allow mutually recursive modules to hide type information from one another. Another issue is that there are several dialects of ML (the most popular being SML and O’Caml), and the module systems of these dialects differ in subtle yet semantically significant ways that have been difficult to account for in any rigorous way. It is important to come to a clear assessment of the existing design space and consolidate what is meant by “the ML module system” before embarking on such a major extension as recursive modules. In this dissertation I contribute to the understanding and evolution of the ML module system
An abstract monadic semantics for value recursion
 In Proceeding of the 2003 Workshop on Fixed Points in Computer Science (FICS
, 2003
"... This paper proposes an operational semantics for value recursion in the context of monadic metalanguages. Our technique for combining value recursion with computational effects works uniformly for all monads. The operational nature of our approach is related to the implementation of recursion in Sch ..."
Abstract

Cited by 20 (7 self)
 Add to MetaCart
This paper proposes an operational semantics for value recursion in the context of monadic metalanguages. Our technique for combining value recursion with computational effects works uniformly for all monads. The operational nature of our approach is related to the implementation of recursion in Scheme and its monadic version proposed by Friedman and Sabry, but it defines a different semantics and does not rely on assignments. When contrasted to the axiomatic approach proposed by Erkök and Launchbury, our semantics for the continuation monad invalidates one of the axioms, adding to the evidence that this axiom is problematic in the presence of continuations. 1
Value Recursion in Monadic Computations
 OGI School of Science and Engineering, OHSU
, 2002
"... viii 1 ..."
(Show Context)
Traced Premonoidal Categories
, 1999
"... Motivated by some examples from functional programming, we propose a generalization of the notion of trace to symmetric premonoidal categories and of Conway operators to Freyd categories. We show that in a Freyd category, these notions are equivalent, generalizing a wellknown theorem relating trace ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
Motivated by some examples from functional programming, we propose a generalization of the notion of trace to symmetric premonoidal categories and of Conway operators to Freyd categories. We show that in a Freyd category, these notions are equivalent, generalizing a wellknown theorem relating traces and Conway operators in cartesian categories.
An Alternative Approach to Initializing Mutually Referential Objects
, 2005
"... Mutual dependencies between objects arise frequently in programs, and programmers must typically resort to manually filling “initialization holes ” to help construct the corresponding object graphs, i.e. null values and/or explicitly mutable locations. This report describes a “baseline ” proposal f ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
(Show Context)
Mutual dependencies between objects arise frequently in programs, and programmers must typically resort to manually filling “initialization holes ” to help construct the corresponding object graphs, i.e. null values and/or explicitly mutable locations. This report describes a “baseline ” proposal for a generalized form of value recursion in an MLlike language called initialization graphs, where value recursion is given the simplistic semantics of a graph of lazy computations whose nodes are sequentially forced, with uses of recursive values checked for initializationsoundness at runtime. We then develop examples using this mechanism to show how problematic the issue of value recursion is for MLlike languages, and in particular how sophisticated reactive objects cannot be defined in the language without using initialization holes, and how this forces ML programmers to break abstraction boundaries. At the same time we show how OO languages rely extensively on null pointers during initialization. We propose that a general, semisafe mechanism allows value recursion to be used in conjunction with existing sophisicated abstract APIs such GUI libraries, and allows freshly defined APIs to be both abstract and yet not require clients to use explicit initialization holes. We propose that the initialization mechanism permits more programs to be expressed in the mutationfree fragment of ML, though we do not formally prove this result. 1
found at the ENTCS Macro Home Page. Initializing Mutually Referential Abstract Objects: The Value Recursion Challenge
"... this file with prentcsmacro.sty for your meeting, ..."
(Show Context)
A Type System for . . .
, 2003
"... In the interest of designing a recursive module extension to ML that is as simple and general as possible, we propose a novel type system for general recursion over effectful expressions. The presence of effects seems to necessitate a backpatching semantics for recursion based on Scheme's. Our ..."
Abstract
 Add to MetaCart
In the interest of designing a recursive module extension to ML that is as simple and general as possible, we propose a novel type system for general recursion over effectful expressions. The presence of effects seems to necessitate a backpatching semantics for recursion based on Scheme's. Our type system ensures statically that recursion is wellfounded (that the body of a recursive expression will evaluate without attempting to access the undefined recursive variable), which avoids some unnecessary runtime costs associated with backpatching. To ensure wellfounded recursion in the presence of multiple recursive variables and separate compilation, we track the usage of individual recursive variables, represented statically by &quot;names&quot;. So that our type system may eventually be integrated smoothly into ML's, reasoning involving names is only required inside code that uses our recursive construct and does not need to infect existing ML code.
Efficient Recursion in the Presence of Effects
"... In the interest of designing a recursive module extension to ML that is as simple and general as possible, we study the important subproblem of how to support recursive definitions of effectful expressions. Effects seem to necessitate a Schemestyle backpatching semantics of recursion, which typical ..."
Abstract
 Add to MetaCart
In the interest of designing a recursive module extension to ML that is as simple and general as possible, we study the important subproblem of how to support recursive definitions of effectful expressions. Effects seem to necessitate a Schemestyle backpatching semantics of recursion, which typically results in a performance penalty since all recursive references must check whether or not the recursive variable has been backpatched yet.