Guy Cousineau
University of Paris
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Guy Cousineau.
international conference on functional programming | 1985
Guy Cousineau; Pierre-Louis Curien; Michel Mauny
The Cartesian closed categories have been shown by several authors to provide the right framework of the model theory of λ-calculus. The second author developed this as a syntactic equivalence between two calculi, giving rise to a new kind of combinatory logic: the categorical combinatory logic, where computations can be done through simple rewrite rules, and, as usual with combinators, avoiding problems with variable name clashes. This paper goes further (though not requiring a previous knowledge of categorical combinatory logic) and describes a very simple machine where categorical terms can be considered as code acting on a graph of values. The only saving mechanism is a stack containing pointers on code or on the graph. Abstractions are handled using closures. The machine is called categorical abstract machine or CAM. The CAM is easier to grasp and prove than the SECD machine. The natural evaluation strategy in the CAM is call-by-value, but lazy evaluation can be easily incorporated. The paper discusses the implementation of a real functional programming language, ML, through the CAM. A basic acquaintance with λ-calculus is required.
Information & Computation | 1978
Jean-Michel Autebert; Luc Boasson; Guy Cousineau
We answer two questions of Van der Walt (Inform. Contr. 32 (1976)): (1) There exists a (context-free) language which is not regular, but is, however, 1-locally linear. (2) The largest full AFL of 1-11 languages is greater than the full AFL of regular sets.
Archive | 1986
Guy Cousineau; Pierre-Louis Curien; Bernard Robinet
Introduction The Amber language embeds many recent ideas in programming language design, and tries to introduce all the features in their minimal, essential, form. One of its main goals is to safely blend static typing with the dynamic requirements of a system programming language. For this purpose, multiple inheritance and persistent objects are integrated in a strongly typed language. Other features include graphics, higher-order functions, modules and concurrency. Amber is a spin-off of the ML programming language [Milner 84]. The ML language is now being standardized, and as such is not very suitable for experimentation. Amber is intended as a tool for trying out new ideas in language implementation, language design, and language environments, while being deeply influenced by the ML experience. As a programming language, Amber was defined to experiment with a new style of polymorphism [Cardelli 84b] which, unlike the ML-style parametric polymorphism [Milner 78], is based on a notion of type inclusion, and can be used to interpret many programming concepts found in object-oriented languages [Goldberg Robson 83]. In this view, the main features of functional and object-oriented languages can be naturally integrated, and the combination of higher-order functions and multiple inheritance can be strongly typed. Some typechecking anomalies are still present in Amber, and current research is aimed at solving them and integrating inclusion polymorphism with parametric polymorphism. Type inclusion also plays an important role in modularization. Amber programs can be partitioned into modules and separately compiled. Modules have import-export lists for types and values. When a type is imported, its actual definition is not accessible: this is a form of data abstraction realized through the module mechanism, and implies that modules can be compiled in any order. It is possible to specify that two imported types, although unknown, are one a subtype of the other, so that inheritance can be made to work across module boundaries. At the programming system level, the implementation is heavily based on the ability to export and import arbitrary values to/from persistent storage. This feature is provided at the lowest level, and guarantees the preservation of any circularity or sharing present in the
mathematical foundations of computer science | 1979
Guy Cousineau; Maurice Nivat
The idea to associate to a flow-chart or non recursive program scheme an infinite tree obtained by development of the flow-chart is an ancient one : it is suggested if not formalized in [14, 16, 21, 25]. The earliest neat mathematical formulation is [29]. This tree is also the solution of a system of tree equations which can easily be written using the labels in the flow-chart represented by an ordinary Algol-like program with go to statements [7, 23, 25] it happens that this tree is a rational infinite tree where we define such a tree by the fact that its set of subtrees is finite : an alternative characterization is that a tree is rational if and only if it is the limit of a sequence of finite trees {tn] n ~ N} whose elements form a rational subset of the set of finite trees (in the sense of Donner [10], the limit can be taken either in the natural metric topology on the set of all finite and infinite trees [22] or as a least upper bound in the structure of complete partial order defined on the same set [29]).
mathematical foundations of computer science | 1979
Guy Cousineau; Patrice Enjalbert
LITP Spring School on Theoretical Computer Science | 1985
Guy Cousineau; Pierre-Louis Curien; Michel Mauny; Ascánder Suárez
Archive | 1998
Guy Cousineau; Michel Mauny
Archive | 1998
Guy Cousineau; Michel Mauny; K. Callaway
Archive | 1998
Guy Cousineau; Michel Mauny; K. Callaway
Archive | 1998
Guy Cousineau; Michel Mauny; K. Callaway