Best opening sentence ever, in a paper on S-Exprs for IDEs.

The paper Haskell-Like S-Expression-Based Language Designed for an IDE appeals to me at the moment because I actually like the regularity of s-exprs (to side-step the inevitable technopsychobabble corners people paint themselves into otherwise) but still really want static type checking (with some inference, probably).

The intro is great and I won't spoil it, here's what is just after the opening jab.

This report documents the results of designing a modern programming language with its IDE in mind. We introduce a new statically typed functional language with strong metaprogramming capabilities, targeting JavaScript, the most popular runtime of today; and its accompanying browser-based IDE. We demonstrate the advantages resulting from designing both the language and its IDE at the same time and evaluate the resulting environment by employing it to solve a variety of nontrivial programming tasks. Our results demonstrate that programmers can greatly benefit from the combined application of modern approaches to programming tools.

Plus, any paper that mentions Shen and Elm and Flow et. al. can't be all bad.

P.S. I think this video is very nice, too.

(some extra keywords: xixixao, Shem, Golem)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Interesting work, but they

Interesting work, but they seem to have forgotten LISP Machines, which, as I've heard but never experienced, had pretty powerful IDE experiences for LISP with structured editing that haven't been matched yet (they never published, and the experience required special hardware so...its basically lost to history). See Ergonomics of the Symbolics Lisp Machine - Reflections on the Developer Productivity. An understandable hole in the work, but a huge one considering the route they took (one I'm always accused of missing also :) ).

It's only lost if you don't

It's only lost if you don't wanna look for it.

1.) Lisp machines are available to buy. (Hardware and Software Emulations)

2.) It's illegal (copyright etc) but you can get the emulation variant of the Symbolics Genera system without problems from the internet and can check it out.

Pay lots of money or break

Pay lots of money or break the law?

I've seen some of the videos, but they are done in an old fashioned long form style that is hard to extract information from (a lot of it looks just like emacs). The lisp machine experience still needs to be nicely explained, if only for historical reference.

You are right not a nice

You are right not a nice situation. I searched the web about the legal status of the Symbolics IP. It is in limbo because the owner is dead and noone can decide what will happen with all the IP of symbolics lisp machine... Interlisp D and the MIT CADR machine is free usable. But Symbolics is the "real" thing... sad.

Almost certainly orphaned

The person who claimed to have the rights to Symbolics Genera almost certainly did not, and the identity of the actual rights-holder(s) is tangled beyond belief. This is a classic example of an orphaned work. There are a lot of interesting things in there, and IMO the community should simply take it back.

The IDE is online

to whet


1. Macros. We implemented a declarative, statically typed language with S-Expression based syntax using a macro-directed implementation which evolved from the compilation strategy of LISPs. This allowed us to provide the facility for user macros, shown in Section 3.4 , available to extend the syntax of the language. We have already found many examples of useful macros, both for simplifying syntax and dealing with side-effects.

2. Implicit functional dependencies. While functional dependencies are a popular ex- tension of Haskell, they have a negative impact on the complexity of its type system, and have not been included in the base language. We came up with a simplified approach to functional dependencies which is both easier to explain to mortal programmers and, together with the rules our system imposes, does not have a negative impact on type inference completeness or decidability. This mechanism is described in Section 3.5 .

3. Highly polymorphic collections API. Informing the design of our type system, we im- plemented an exhaustive collections library polymorphic in the types of collections, which simplifies their use and removes code duplication by increasing the level of abstraction. This API is described in Section 3.7 .

4. Interactive IDE. In Sections 4.6 and 4.7 we describe the main interface of our IDE and the way in which programmers can freely experiment with programs, including animations and interactive interfaces, and observe their execution. This model works thanks to our language being functional and pure-by-default.

5. Surfacing type errors through origins of types. Although the core of the idea did not originate with us, we took great care in implementing a type system which always reports the origin of errors, even when these are coming from explicit type declarations. Our implementation, detailed in Section 4.8.2 can provide a platform for testing this approach towards type error messaging and potentially informing improvements to current Hindley- Milner style type system implementations.

6. Colorful and powerful syntax. There have been many implicit influences between the language and the IDE design but the single biggest one is the approach to effective syntax. We have shown in Section 3.3.3 that S-Expression based syntax can be made more readable and less verbose through the use of color and that it can be exploited to provide a more powerful editing experience based on the actual AST of the program.



The improper spelling of sentence by a high strung person, normally a Republican.

This sentance was misspelled by Mr. Kyle Shook.

Not to be a grammarnazi, but this burns.


i will try to remamber.

Feel the Barn!

Yah. No problem.