Posts filed under 'Reflection'

Traits, Monads, and language design

I’ve been amusing myself recently by designing a programming language. Over the past few weeks, to explore some design ideas for it, I implemented a small traits system and a runtime-checked overloaded monad implementation in Scheme. For those interested in learning more about what I’ve been doing, I’ve just written up an article covering some of the detail.

Add comment May 8th, 2006 tonyg

Subtext

Subtext is a demonstration of a novel model of computer programming, with interactive program modification and prototypes.

Continue Reading Add comment January 12th, 2006 mikeb

Io - Prototypes for ordinary people

Some programming languages look like they were designed especially to secure their authors a place on LtU - sort of 15 minutes of fame for language mavens. That’s not the case with Io, although it does sport some neat features that are not common enough in today’s language universe (and it did make it to LtU, which is how i found out about it).

Continue Reading 1 comment December 7th, 2005 Tom Berger

Spoon and the Object Visualiser

Take a look at this part of NetJam.ORG, in which Craig Latta builds a visual display of a running Smalltalk Image. Be sure to check out the movie of the first 50ms or so of a running image. Smalltalk gets all the cool toys.

Add comment October 17th, 2005 tonyg

The Design of a Pretty-printing Library

This paper is hard going, but very rewarding. The author concentrates on two ways of transforming a formal, algebraic specification into an implementation, starting with very simple examples and working up to a pretty-printing library.

The reason this paper is worthwhile is that, by moving very slowly and by demonstrating the same theme over and over, each time using a slightly more complex example, the author allows the reader to develop a clear insight into the connection between the terms and the coterms of an algebra.

The two styles of implementation he explores are taking the terms of an algebra and building a datatype from them more-or-less directly, and taking the coterms (or contexts) of the algebra and using them as the core of the datatype instead. Equational reasoning from these starting points leads to dual implementations of the semantics of the specification.

The programs based on terms seem natural to me — reasoning with coterms is awkward at first — but coterm-based programs reify far more detail of the ongoing computation, in a way reminiscent of the design of a custom interpreter for a domain-specific language. To get access, from a term-based solution, to the information that is explicitly represented in a coterm-based solution, you would need to make use of reflective primitives in the host language.

It’s intriguing, the way reflection unexpectedly appears in the mirror-image of a data structure…

Add comment July 18th, 2005 tonyg

Next Posts

Calendar

August 2008
M T W T F S S
« Jul    
 123
45678910
11121314151617
18192021222324
25262728293031

Posts by Month

Posts by Category