LINKS
Parser Generation
CamlP4
A system for extending the syntax of the
OCaml language.
It makes it possible to define and use parsers and grammars
and is one of the most convenient ways to generate LL(1) parsers.
Standard ways to deal with ambiguity for example by defining
associativities of operators are present.
Still lexers have to be defined separately and not all context-free
grammars can be used.
OpenZz
An interpreted dynamic parser that supports evolving grammars
similar to Speagram but is limited only to LALR(1) languages.
Syntax Definition Formalism
SDF is a language for defining syntax that is based on context-free
grammars and includes a formalism for lexer definitions and
declarative disambiguation constructs like prioritiy and associativity
definitions.
It is used in the
MetaEnvironment where grammars and program transformations can be defined.
It does not support dynamic definitions of grammars and
extending them on the fly.
Functional Programming Languages
Haskell
A purely functional language featuring static typing,
higher-order functions, polymorphism, type classes, monadic effects
and many other interesting features.
You can read the motivation
Why Use Haskell to understand why functional programming was
chosen as the basis for Speagram.
The Caml Language
A general-purpose programming language,
designed with program safety and reliability in mind.
It is very expressive, yet easy to learn and use.
Caml supports functional, imperative, and object-oriented programming styles
and generates very efficient code.
User Interfaces and Human-Computer Interaction
The Humane Interface
The book The Humane Interface: New Directions for Designing
Interactive Systems by Jef Raskin is about interactive system design.
It claims that many current interface paradigms are dead ends,
and that to make computers significantly easier to use requires new approaches.
The author, Jef Raskin, is the creator of the Apple Macintosh project and this
book can convince you that using language and keyboard is often more convenient
than relying solely on your mouse and GUI.