Results 11 -
13 of
13
Subtyping and Overloading in a Functional Programming Language
, 1994
"... This paper presents a functional programming language named SODA ..."
Integrating Paradigms via Interaction Nets (Extended Abstract)
"... In this paper we begin a study of the integration of programming paradigms using Lafont's interaction nets as a unifying framework. Interaction nets are a very simple kind of rewrite system based on rewriting of networks. Because of their linear logic foundation they give a refined view of computati ..."
Abstract
- Add to MetaCart
In this paper we begin a study of the integration of programming paradigms using Lafont's interaction nets as a unifying framework. Interaction nets are a very simple kind of rewrite system based on rewriting of networks. Because of their linear logic foundation they give a refined view of computation; they have been used for the implementation of programming languages based on the lambda-calculus, and recently for the implementation of term rewriting systems. Here we study the implementation of languages based on combinations of the lambda-calculus and term rewriting systems. We show that interaction nets give a uniform implementation and semantic framework for this kind of language, which we hope to extend also to other programming paradigms.
An exercise in dependent types: A well-typed interpreter
- In Workshop on Dependent Types in Programming, Gothenburg
, 1999
"... . The result type of an interpreter written in a typed language is normally a tagged union. By using depent types, we can be more precise about the type of values that the intepreter returns. There is no need for tagging these values with their type, something which opens the door to more eOEcie ..."
Abstract
- Add to MetaCart
. The result type of an interpreter written in a typed language is normally a tagged union. By using depent types, we can be more precise about the type of values that the intepreter returns. There is no need for tagging these values with their type, something which opens the door to more eOEcient interpreters. 1 An annoying problem We are ignoring ? for now. Writing an interpreter for a language which can produce results of dioeerent types requires some kind of encoding of the result, as in gure 1. The encoding is captioned in the tagging in the data type Value. This tagging is ineOEcient since each return value must be tagged. In addition, the tags must be tested and the real values extracted again when they are used. data Expr = EBool Bool --- EInt Int --- EAdd Expr Expr data Value = VBool Bool --- VInt Int --- VError interp :: Expr -? Value interp (EBool b) = VBool b interp (EInt i) = VInt i interp (EAdd e1 e2) = case (interp e1, interp e2) of (VInt i1, VInt i2) -? V...

