skip to main content
10.1145/289423acmconferencesBook PagePublication PagesicfpConference Proceedingsconference-collections
ICFP '98: Proceedings of the third ACM SIGPLAN international conference on Functional programming
ACM1998 Proceeding
Publisher:
  • Association for Computing Machinery
  • New York
  • NY
  • United States
Conference:
ICFP98: 1998 International Conference on Functional Programming Baltimore Maryland USA September 26 - 29, 1998
ISBN:
978-1-58113-024-9
Published:
29 September 1998
Sponsors:
Next Conference
October 12 - 18, 2025
Singapore , Singapore
Reflects downloads up to 08 Mar 2025Bibliometrics
Abstract

No abstract available.

Article
Free
On the runtime complexity of type-directed unboxing

Avoiding boxing when representing native objects is essential for the efficient compilation of any programming language For polymorphic languages this task is difficult, but several schemes have been proposed that remove boxing on the basis of type ...

Article
Free
Building program optimizers with rewriting strategies

We describe a language for defining term rewriting strategies, and its application to the production of program optimizers. Valid transformations on program terms can be described by a set of rewrite rules; rewriting strategies are used to describe when ...

Article
Free
Higher-order arity raising

Arity raising, also known as variable splitting or flattening, is the program optimization which transforms a function of one argument into a function of several arguments by decomposing the structure of the original one argument into individual ...

Article
Free
A type based sharing analysis for update avoidance and optimisation

Sharing of evaluation is crucial for the efficiency of lazy functional languages, but unfortunately the machinery to implement it carries an inherent overhead. In abstract machines this overhead shows up as the cost of performing updates, many of them ...

Article
Free
Taming effects with monadic typing

The familiar Hindley-Milner type system of the ML language family is extended with monad annotations to account for possible side effects of expression evaluation. This also allows effects to be effectively encapsulated by lexical scopes Γ with ...

Article
Free
The marriage of effects and monads

Gifford and others proposed an effect typing discipline to delimit the scope of computational effects within a program, while Moggi and others proposed monads for much the same purpose. Here we marry effects to monads, uniting two previously separate ...

Article
Free
A theory of core fudgets

The Fudgets system is a toolkit for developing graphical applications in the lazy functional programming language Haskell. In this paper we develop an operational semantics for a subset of this system, inspired by ideas from concurrency theory. A ...

Article
Free
PLAN: a packet language for active networks

PLAN (Packet Language for Active Networks) is a new language for programs that form the packets of a programmable network. These programs replace the packet headers (which can be viewed as very rudimentary programs) used in current networks. As such, ...

Article
Free
Modular object-oriented programming with units and mixins

Module and class systems have evolved to meet the demand for reuseable software components. Considerable effort has been invested in developing new module and class systems, and in demonstrating how each promotes code reuse. However, relatively little ...

Article
Free
Programming with variable functions

What is a good method to specify and derive imperative programs? This paper argues that a new form of functional programming fits the bill: where variable functions can be updated at specified points in their domain.Traditional algebraic specification ...

Article
Free
YALE: yet another lambda evaluator based on interaction nets

Interaction nets provide a graphical paradigm of computation based on net rewriting. They have proved most successful in understanding the dynamics of reduction in the λ-calculus, where the prime example is the implementation of optimal reduction ...

Article
Free
Compiling standard ML to Java bytecodes

MLJ compiles SML'97 into verifier-compliant Java byte-codes. Its features include type-checked interlanguage working extensions which allow ML and Java code to call each other, automatic recompilation management, compact compiled code and runtime ...

Article
Free
Typed cross-module compilation

Higher-order modules are very effective in structuring large programs and defining generic, reusable software components. Unfortunately, many compilation techniques for the core languages do not work across the module boundaries. As a result, few ...

Article
Free
H/Direct: a binary foreign language interface for Haskell

H/Direct is a foreign-language interface for the purely functional language Haskell. Rather than rely on host-language type signatures, H/Direct compiles Interface Definition Language (IDL) to Haskell stub code that marshals data across the interface. ...

Article
Free
The spineless tagless G-machine, naturally

The application of natural semantic specifications of lazy evaluation to areas such as usage analysis, formal profiling and abstract machine construction has shown it to be a useful formalism. This paper introduces several variants and extensions of ...

Article
Free
Lava: hardware design in Haskell

Lava is a tool to assist circuit designers in specifying, designing, verifying and implementing hardware. It is a collection of Haskell modules. The system design exploits functional programming language features, such as monads and type classes, to ...

Article
Free
Lazy computation with exact real numbers

We provide a semantical framework for exact real arithmetic using linear fractional transformations on the extended real line. We present an extension of PCF with a real type which introduces an eventually breadth-first strategy for lazy evaluation of ...

Article
Free
Functional differentiation of computer programs

We present two purely functional implementations of the computational differentiation tools -- the well known numeric (not symbolic!) techniques which permit to compute pointwise derivatives of functions defined by computer programs economically and ...

Article
Free
A distributed garbage collector with diffusion tree reorganisation and mobile objects

We present a new distributed garbage collection algorithm that is able to reorganise diffusion trees and to support mobile objects. It has a modular design comprising three components: a reliable transport mechanism, a reference-counting based ...

Article
Free
Pragmatic subtyping in polymorphic languages

We present a subtyping extension to the Hindley/Milner type system that is based on name inequivalence. This approach allows the subtype relation to be defined by incremental construction of polymorphic records and datatypes, in a way that subsumes the ...

Article
Free
A framework for type inference with subtyping
Article
Free
Cayenne—a language with dependent types

Cayenne is a Haskell-like language. The main difference between Haskell and Cayenne is that Cayenne has dependent types, i.e., the result type of a function may depend on the argument value, and types of record components (which can be types or values) ...

Article
Free
Recycling continuations

If the continuations in functional data-structure-generating programs are made explicit and represented as records, they can be "recycled." Once they have served their purpose as temporary, intermediate structures for managing program control, the space ...

Article
Free
Imperative streams—a monadic combinator library for synchronous programming

The paper presents a generalization of Haskell's IO monad suitable for synchronous concurrent programming. The new monad integrates the deterministic concurrency paradigm of synchronous programming with the powerful abstraction features of functional ...

Article
Free
The under-appreciated unfold

Folds are appreciated by functional programmers. Their dual, unfolds, are not new, but they are not nearly as well appreciated. We believe they deserve better. To illustrate, we present (indeed, we calculate) a number of algorithms for computing the ...

Article
Free
Fold and unfold for program semantics

In this paper we explain how recursion operators can be used to structure and reason about program semantics within a functional language. In particular, we show how the recursion operator fold can be used to structure denotational semantics, how the ...

Article
Free
Encoding types in ML-like languages

A Hindley-Milner type system such as ML's seems to prohibit type-indexed values, i.e., functions that map a family of types to a family of values. Such functions generally perform case analysis on the input types and return values of possibly different ...

Article
Free
Intensional polymorphism in type-erasure semantics

Intensional polymorphism, the ability to dispatch to different routines based on types at run time, enables a variety of advanced implementation techniques for polymorphic languages, including tag-free garbage collection, unboxed function arguments, ...

Article
Free
Implementing typed intermediate languages

Recent advances in compiler technology have demonstrated the benefits of using strongly typed intermediate languages to compile richly typed source languages (e.g., ML). A type-preserving compiler can use types to guide advanced optimizations and to ...

Article
Free
A non-deterministic call-by-need lambda calculus

In this paper we present a non-deterministic call-by-need (untyped) lambda calculus λnd with a constant choice and a let-syntax that models sharing. Our main result is that λnd has the nice operational properties of the standard lambda ...

Contributors
  • Northeastern University
  • Yale University
  • Sorbonne University

Index Terms

  1. Proceedings of the third ACM SIGPLAN international conference on Functional programming

      Recommendations

      Acceptance Rates

      ICFP '98 Paper Acceptance Rate 30 of 77 submissions, 39%;
      Overall Acceptance Rate 333 of 1,064 submissions, 31%
      YearSubmittedAcceptedRate
      ICFP '14852833%
      ICFP '131334030%
      ICFP '12883236%
      ICFP '11923336%
      ICFP '03952425%
      ICFP '02762432%
      ICFP '01662335%
      ICFP '001102422%
      ICFP '99812531%
      ICFP '98773039%
      ICFP '97782532%
      ICFP '96832530%
      Overall1,06433331%