scispace - formally typeset
J

John T. O'Donnell

Researcher at University of Glasgow

Publications -  56
Citations -  645

John T. O'Donnell is an academic researcher from University of Glasgow. The author has contributed to research in topics: Functional programming & Parallel algorithm. The author has an hindex of 14, co-authored 56 publications receiving 628 citations. Previous affiliations of John T. O'Donnell include Indiana University.

Papers
More filters
Book ChapterDOI

DSL Implementation in MetaOCaml, Template Haskell, and C++

TL;DR: This paper reviews embedding, and summarizes how two alternative techniques – staged interpreters and templates – can be used to overcome the limitations of embedding.
Book ChapterDOI

Teaching functional circuit specification in Hydra

TL;DR: The Hydro project as discussed by the authors is a set of methods and software tools for carrying out digital circuit design using Haskell, which has been used successfully for three years in the third year course on Computer Architecture at the University of Glasgow, with plans to extend its use to the advanced fourth year course.
Book ChapterDOI

Generating Netlists from Executable Circuit Specifications in a Pure Functional Language

TL;DR: In this article, the authors propose a way to name components explicitly in a pure functional language, without placing an undue burden on the circuit designer, and demonstrate how to manipulate circular graphs in pure functional languages.
Proceedings ArticleDOI

Overview of hydra: a concurrent language for synchronous digital circuit design

TL;DR: The motivations behind Hydra are discussed, the system with a significant portion of the design of a basic RISC processor is illustrated, and the system offers black box abstraction and general design patterns that simplify the designof circuits with regular structure.
Book ChapterDOI

Expressing and Reasoning About Non-Deterministic Functional Programs

TL;DR: Non-determinism can also be related to program refinement: a non-deterministic function may be considered to be a specification which is refined to a deterministic implementation, and this aspect will not be addressed here.