| Chih-Ping Chen and Paul Hudak. Rolling your own mutable adt: A connection between linear types and monads. In 24'th Symposium on Principles of Programming Languages. ACM Press, January 1997. |
....form the free algebra on the values for a monad which encapsulates the computational e ects present in the programming language. This idea fed through into the functional programming community where it has led to techniques in structuring compilers for both functional and non functional languages [CH97, Gor94, LH96, LHJ95, JW93, Wad95, Wad97, Wad98]. Less surprisingly the closely related theory of sketches has been used to give accounts of the construction of datatypes [BW90] These applications depend on looking at monads on categories other than Set, and for these categories something interesting happens. Equational logic can be soundly ....
Chih-Ping Chen and Paul Hudak. Rolling your own mutable adt: A connection between linear types and monads. In 24'th Symposium on Principles of Programming Languages. ACM Press, January 1997.
....are normally grouped into regions. Tofte and others [33] use regions and e ects to perform all memory management operations in their ML compiler. More recently, researchers have begun to investigate the relationships between these three fundamental mechanisms. For example, Chen and Hudak [5] have discovered a connection between linear types and monads and Wadler [38] has recently presented a correspondence between monads and e ect systems. In this paper, we ll in the third side of the triangle by exploring the synergy between linear types and region, type and e ect systems, speci ....
Chih-Ping Chen and Paul Hudak. Rolling your own mutable adt { a connection between linear types and monads. In Twenty-Fourth ACM Symposium on Principles of Programming Languages, pages 54-66, Paris, January 1997.
.... that can be systematically applied to user defined data types [2, 7] Several researchers have demonstrated how to use monads in combination with type based primitives to achieve further abstraction [2, 6, 8, 11] Monadic data types are used to maintain single threaded access to data structures [4], and to make modular interpreters [5, 9] Type based approach to compact printing and parsing of functional data structures is shown in [8] However, it seems that until now no one had addressed the need of out of core processing of functional data structures. Although Objective Caml provides ....
Chih-Ping Chen and Paul Hudak. Rolling your own mutable ADT: A connection between linear types and monads. In The 24th Symposium on Principles of Programming Languages, pages 54--66. ACM Press, January 1997.
.... there are no free occurrences of k in the clauses, its value is no longer reachable (i.e. it is garbage) as soon as the pattern is matched [12] In other terminology, invokeL obeys a linear type discipline, which has important implications about how the data structure bound to k can be treated [4]. The second observation is that the Pair constructed in the Pairing k clause is similar in form and contents to the Pairing k itself. Both have two fields, and both have the same value in their first fields. The only difference is that the k in the Pairing k is replaced with v in the Pair. ....
....monad that incurs a cost in terms of space. We plan to explore the extension of these transformations to other monads or some general monadic framework. For related work, see Chen and Hudak s discussion of translating functional, linear abstract datatypes into monadic ones with updatable state [4]. Also, one of the great powers of monads is their provision for the reification and reflection of monadic metainformation. In order to retain this power, the precise implications of the presence of reflective operators like call cc must be explored in the context of recycling. Acknowledgments ....
Chih-Ping Chen and Paul Hudak. Rolling your own mutable ADT: A connection between linear types and monads. In Conference Record of POPL '97: The 24TH ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 54--66, Paris, France, January 1997. ACM Press.
....then the thread objects may be reused, and they become strikingly similar to the register set that holds the instruction pointer, stack, etc. of each thread in the machine level characterization. Taking this idea even farther, it seems that, using techniques like those described by Chen and Hudak [1], it should be possible to describe a threaded language monadically, as we do here, but implement it with mutation. 6 Actually, the programming language, as it stands, has no means of converting into and out of T ( types. To be technically correct, we should use hide and reveal operators to ....
Chih-Ping Chen and Paul Hudak. Rolling your own mutable ADT: A connection between linear types and monads. In Conference Record of POPL '97: The 24 th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 54-66, Paris, France, January 1997. ACM Press.
....technique. More recently, refinements of functional programming languages have emerged which re introduce mutable state without re introducing references as an observable concept. Programming languages based on linear type disciplines [Gir87, Wad90b, LM92, Bak92, Ode92, AP94, MOTW95, CH97] allow state to be updated destructively as long as it can be verified that only one reference to the state exists. In this case, updating state is indistinguishable from creating and modifying a copy. Programming languages based on monads [Mog89, Wad90a, Mog91, Wad92, HPW92] allow one to ....
Chih-Ping Chen and Paul Hudak. Rolling your own mutable adt -- a connection between linear types and monads. In Proc. 24th ACM Symposium on Principles of Programming Languages, pages 54--67, January 1997.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC