Results 1 -
9 of
9
Non-Strict Languages - Programming and Implementation
, 1994
"... Non-strict evaluation improves the expressive power of functional languages at the expense of an apparent loss of efficiency. In this paper we give examples of this expressive power, taking as an example an interactive functional program and describing the programming techniques depending on non-str ..."
Abstract
-
Cited by 19 (0 self)
- Add to MetaCart
Non-strict evaluation improves the expressive power of functional languages at the expense of an apparent loss of efficiency. In this paper we give examples of this expressive power, taking as an example an interactive functional program and describing the programming techniques depending on non-strict evaluation which improved its design. Implementation methods for non-strict languages have delivered poor performance precisely when such programming techniques have been used. This need not be the case, however, and in the second part of the paper we describe Tim, a method of implementing non-strict languages for which the penalty for using lazy evaluation is very small. 1 Introduction Effort in the functional programming community is today divided into two main activities: making efficient implementations of functional languages and exploiting the expressive power of these languages by writing elegant programs. To a large extent these activities are carried out by separate groups of p...
Realtime Signal Processing -- Dataflow, Visual, and Functional Programming
, 1995
"... This thesis presents and justifies a framework for programming real-time signal processing systems. The framework extends the existing "block-diagram" programming model; it has three components: a very high-level textual language, a visual language, and the dataflow process network model of computat ..."
Abstract
-
Cited by 13 (1 self)
- Add to MetaCart
This thesis presents and justifies a framework for programming real-time signal processing systems. The framework extends the existing "block-diagram" programming model; it has three components: a very high-level textual language, a visual language, and the dataflow process network model of computation. The dataflow process network model, although widely-used, lacks a formal description, and I provide a semantics for it. The formal work leads into a new form of actor. Having established the semantics of dataflow processes, the functional language Haskell is layered above this model, providing powerful features---notably polymorphism, higher-order functions, and algebraic program transformation---absent in block-diagram systems. A visual equivalent notation for Haskell, Visual Haskell, ensures that this power does not exclude the "intuitive" appeal of visual interfaces; with some intelligent layout and suggestive icons, a Visual Haskell program can be made to look very like a block dia...
Modelling Operating System Structures by Timed Stream Processing Functions
- Journal of Functional Programming
, 1991
"... Some extensions of the basic formalism of stream processing functions are useful to specify complex structures such as operating systems. ..."
Abstract
-
Cited by 11 (0 self)
- Add to MetaCart
Some extensions of the basic formalism of stream processing functions are useful to specify complex structures such as operating systems.
Models for Persistence in Lazy Functional Programming Systems
, 1993
"... Research into providing support for long term data in lazy functional programming systems is presented in this thesis. The motivation for this work has been to reap the benefits of integrating lazy functional programming languages and persistence. The benefits are . the programmer need not write cod ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
Research into providing support for long term data in lazy functional programming systems is presented in this thesis. The motivation for this work has been to reap the benefits of integrating lazy functional programming languages and persistence. The benefits are . the programmer need not write code to support long term data since this is provided as part of the programming system . persistent data can be used in a type safe way since the programming language type system applies to data with the whole range of persistence . the benefits of lazy evaluation are extended to the full lifetime of a data value. Whilst data is reachable, any evaluation performed on the data persists. A data value changes monotonically from an unevaluated state towards a completely evaluated state over time. . interactive data intensive applications such as functional databases can be developed. These benefits are realised by the development of models for persistence in lazy functional programming systems. Tw...
Making Choices Lazily
- Proc. FPCA'95, ACM
, 1995
"... We present a natural semantics that models the untyped, normal order -calculus plus McCarthy's amb in the context of call-by-need parameter passing. This results in a singular semantics for amb. Previous work on singular choice has concentrated on erratic choice, a less interesting nondeterministic ..."
Abstract
-
Cited by 8 (3 self)
- Add to MetaCart
We present a natural semantics that models the untyped, normal order -calculus plus McCarthy's amb in the context of call-by-need parameter passing. This results in a singular semantics for amb. Previous work on singular choice has concentrated on erratic choice, a less interesting nondeterministic choice operator, and only in relation to callby -value parameter passing, or call-by-name restricted to deterministic terms. The natural semantics contains rules for both convergent and divergent behaviour, allowing it to distinguish programs that dier only in their divergent behaviour. As a result, it is more discriminating than current domain-theoretic models. This, and the fact that it models singular amb, makes the natural semantics suitable for reasoning about lazy, functional languages containing McCarthy's amb. 1 Introduction The need for non-determinism in functional programming is apparent. There are parallel algorithms that are inherently non-deterministic, deterministic para...
Deterministic Concurrency
- In Proceedings of the 1993 Glasgow Workshop on Functional Programming
, 1993
"... Existing functional languages appear not to be suitable for implementing systems which are inherently concurrent, such as operating system environments. Adaptations to functional languages developed to support such applications have in the past always involved the introduction of non-determinism. ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
Existing functional languages appear not to be suitable for implementing systems which are inherently concurrent, such as operating system environments. Adaptations to functional languages developed to support such applications have in the past always involved the introduction of non-determinism.
Natural Semantics for Non-Determinism
, 1993
"... We present a natural semantics for the untyped lazy -calculus plus McCarthy's amb, a nondeterministic choice operator. The natural semantics includes rules for both convergent behaviour (dened inductively) and divergent behaviour (dened co-inductively). This semantics is equivalent to a small ste ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We present a natural semantics for the untyped lazy -calculus plus McCarthy's amb, a nondeterministic choice operator. The natural semantics includes rules for both convergent behaviour (dened inductively) and divergent behaviour (dened co-inductively). This semantics is equivalent to a small step reduction semantics that corresponds closely to our operational intuitions about McCarthy's amb. We present equivalences for convergent and divergent behaviour based on the natural semantics and prove a Context Lemma for the convergence equivalence. We then give a -theory l 8 , based on the equivalences for convergent and divergent behaviour. Since it is able to distinguish between programs that dier only in their divergent behaviour, the -theory is more discriminating than equational theories based on current domain-theoretic models. It is therefore more suitable for reasoning about functional programs containing McCarthy's amb. Contents 1 Introduction 2 2 Related Work 3 3 ...
Realtime Signal Processing Data ow, Visual, and Functional Programming
, 1995
"... This thesis presents and justi es a framework for programming real-time signal process-ing systems. The framework extends the existing \block-diagram " programming model� it has three components: a very high-level textual language, a visual language, and the data ow process network model of com ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
This thesis presents and justi es a framework for programming real-time signal process-ing systems. The framework extends the existing \block-diagram " programming model� it has three components: a very high-level textual language, a visual language, and the data ow process network model of computation. The data ow process network model, although widely-used, lacks a formal description, and I provide a semantics for it. The formal work leads into a new form of actor. Having established the semantics of data ow processes, the functional language Haskell is layered above this model, providing powerful features|notably polymorphism, higher-order func-tions, and algebraic program transformation|absent in block-diagram systems. A visual equivalent notation for Haskell, Visual Haskell, ensures that this power does not exclude the \intuitive " appeal of visual interfaces � with some intelligent layout and suggestive icons, a Visual Haskell program can be made to look very like ablock diagram program. Finally, the functional language is used to further extend data ow process networks, by simulating timed and dynamically-varying networks.
Adaptive High-Level Scheduling in a Generic Parallel Runtime Environment
- In Symposium on Trends in Functional Programming (TFP
, 2007
"... In this paper we explore the potential of functional languages in designing and implementing complex distributed systems. We focus on the areas of parallel computation and coordination, and describe the prototype implementation of a generic runtime environment (RTE) for parallel execution. In partic ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
In this paper we explore the potential of functional languages in designing and implementing complex distributed systems. We focus on the areas of parallel computation and coordination, and describe the prototype implementation of a generic runtime environment (RTE) for parallel execution. In particular, we discuss the implementation of scheduling algorithms in this context. Key features of our design are modularity, a separation between basic components, and employing a hierarchy with increasing levels of abstractions. The microkernel of this system is accessed via a narrow interface and most of the coordination of the system is realised in a functional language, (Concurrent) Haskell [5], at system level. Thus, we obtain a prototype in the form of an executable specification, amenable to formal reasoning, and easier to maintain and more flexible than conventional RTEs. In particular, components can be easily replaced, and we demonstrate the flexibility of this approach by presenting different variants of the scheduling component for the parallel execution of Haskell programs, put on top of GHC [4]. In the full paper we add sophisticated work distribution policies. With our approach we target complex architectures such as Computational Grids [1]. To handle such heterogeneous, global architectures with potentially thousands of machines a modular design with easily replacable components is crucial. More generally, this work underlines the usability of a high-level language such as Concurrent Haskell as a systems programming language [2].

