Jaskell is a functional scripting programming language that runs in JVM. The name "Jaskell" stands for Java-Haskell, but it is not haskell 1. Most of the current scripting languages are Object-Oriented. Though they more or less have functional tastes (Ruby's sexy closure, for example), the heart of them are still Object-Oriented. One of the most important essenses of functional programming (combinators) is yet to be brought into Java. 2. Jaskell brings with it higher order function, function currying, pattern match and monadic combinator support. 3. Monadic combinator is ideal for designing Domain Specific Language. It is relatively easy to tailor Jaskell runtime to make domain specific syntax look like simple atomic statements. See Neptune for a real example. 4. Jaskell is nothing but a Java library that passes Java objects in and out of the interpreter.
JastAdd is an open source Java-based compiler compiler system. It is designed to support high-level extensible implementation of compilers and related tools like analyzers, transformation tools, etc. Features * object-oriented abstract syntax (based on Java) * static aspects (aka introduction or open classes) * declarative features (attributes, equations, and rewriting rules) * context-dependent rewriting (implicit evaluation based on attribute dependencies) * advanced attribute grammar features (like reference attributes, circular attributes, and nonterminal attributes) * practical combination of declarative and imperative aspects * combine with any Java-based parser generator To learn more, start by reading the Concept Overview. Then look at the Tutorial Examples and the Key Publications.
In our professional software development, we have focused on finding ways to help developers work more effectively. Despite the range of programming languages available today, we are still limited by them. It makes sense to extend the existing languages to create more domain-oriented ones, which allow writing programs on a higher level and in a manner that is more natural to each domain. With an instrument that allows creating language constructs as simple as creating classes or methods is in a conventional language, you can significantly change the way you develop software. This new style of programming, when you create specialized languages, use them to develop software, and extend them when and how required, is called Language Oriented Programming (LOP). MPS Story Meta Programming System started in 2003 as a research project. In 2004, its underlying concepts were described in the Language Oriented Programming article.
The JWIG project investigates design of high-level languages and program analyses for server-oriented Web application programming. JWIG is a Java-based descendant of <bigwig>, which in turn was inspired by MAWL. The current version of JWIG provides: * a flexible method for dynamically generating XHTML documents using a unique template mechanism based on XACT, * a convenient programming model for working with form input, including declarative form field validation using PowerForms, * an explicit language-based model of sessions, and * program analyses that at compile-time guarantee that all documents being generated dynamically are valid XHTML 1.0 and that form input fields always match the code that receives the input.
Efficiently translating Haskell to JVM Bytecode using GHC's intermediate language, STG. LambdaVM is the proof that complete and efficient translation is possible. LambdaVM is a set of patches to GHC's which extend it to fully support generating useable JVM bytecode. It modifies the three primary components of GHC: * The compiler itself: The compiler has been modified to transform STG, one of GHC's many intermediate languages, to JVM bytecode. * The runtime system (RTS): GHC's RTS implemented as a mix of C and C-- has been reimplemented in Java. * The base libraries: GHC's base libraries have been modified to run on top of Java's standard libraries rather than ANSI C/POSIX libraries. October, 2008 Update LambdaVM is coming back! I've fixed all the GHC 6.8.x build problems and the instructions below should once again work. LambdaVM itself is still based on a circa November, 2007 GHC HEAD but moving all my changes to the current HEAD is next
I enjoy writing and in addition to my published books I offer free Open Content material on this web page. I both enjoy and appreciate feedback on ideas for material and reporting any errors. I offer free web books on Java and artificial intelligence programming, Common Lisp programming, and a new but still incomplete book The Software Design and Development Book. I am also working on a Ruby AI book and a short paper on AI design patterns. I also have a link to an old paper on AI, Go and Consciousness (updated 1/25/2004) available here. I have a short paper Jumpstarting the Semantic Web available here (new version 1/14/2005). I am also starting to include my fiction (short stories) here in addition to computer science web books.
EXTENSIBLE PARSING & TRANSFORMATION We present the metafront tool for specifying flexible, safe, and efficient syntactic transformations between languages defined by context-free grammars. The transformations are guaranteed to terminate and to map grammatically legal input to grammatically legal output. We rely on a novel parser algorithm, specificity parsing, that is designed to support gradual extensions of a grammar by allowing productions to remain in a natural style and by statically reporting ambiguities and errors in terms of individual productions as they are being added. Our tool may be used as a parser generator in which the resulting parser automatically supports a flexible, safe, and efficient macro processor, or as an extensible lightweight compiler generator for domain-specific languages. We show substantial examples of both kinds.
Nailgun is a client, protocol, and server for running Java programs from the command line without incurring the JVM startup overhead. Programs run in the server (which is implemented in Java), and are triggered by the client (written in C), which handles all I/O.