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.
[TIMe - eMBEdded - Reactive] Timber is a general programming language specifically aimed at the construction of complex event-driven systems. It allows programs to be conveniently structured in terms of objects and reactions, and the real-time behavior of reactions can furthermore be precisely controlled via platform-independent timing constraints. This property makes Timber particularly suited to both the specification and the implementation of real-time embedded systems. Timber is deeply rooted in the functional programming tradition, although it also draws heavily on object-oriented concepts, and has the notion of concurrent execution built into its core.
My thesis clarified the relationships between existing dialects of ML and studied extending ML with support for recursive modules. Solve a critical problem involving the interaction of recursion and data abstraction known as the double vision problem. In other work with Bob Harper and Manuel Chakravarty, I showed how to extend ML with support for overloading and ad hoc polymorphism through Haskell-style type classes. This work exposes connections between ML modules and Haskell type classes, resulting in a unifying account of the two features Andreas and I have developed a novel module system design that addresses one of the key remaining problems with recursive modules, namely separate compilation. This design seamlessly integrates elements of both traditional ML module systems and Bracha-style mixin modules, resulting in a minimalist account of the ML module system that unifies features. A prototype is available
Daniel Fridlender Mia Indrika March 2001 Inspired by Danvy, we describe a technique for defining, within the Hindley-Milner type system, some functions which seem to require a language with dependent types. We illustrate this by giving a general definition of zipWith for which the Haskell library provides a family of functions, each member of the family having a different type and arity. Our technique consists in introducing ad hoc codings for natural numbers which resemble numerals in lambda-calculus
House updated to 6.8.2 I've been hacking on House for the last year or so. My primary work is two-fold: to integrate Peng Li's work on Lightweight Concurrency, and to build a priority-based scheduler atop the framework. In order to do that, I also had to update House to run on GHC 6.8.2. Thanks are due to my advisor, Andrew Tolmach for incredible help and direction, to Adam Wick for help porting House to GHC 6.8.2, to Peng Li for supplying a snapshot of his lightweight concurrency code, and to Simon Marlow for his amazing help with some tricky RTS issues.
Keeping two or more copies of the same document synchronized with each other in real-time is a complex challenge. This paper describes the differential synchronization algorithm. Differential synchronization offers scalability, fault-tolerance, and responsive collaborative editing across an unreliable network. 1 Conventional Strategies The three most common approaches to synchronization are ownership, event passing and three-way merges. These methods are conceptually simple, but all have drawbacks. link to googletalk video and mobWrite sw
ATS is a PL with a highly expressive type system from the framework Applied Type System. Both dependent types and linear types are available in ATS. The current implementation of ATS (ATS/Anairiats) is written in ATS itself. It can be as efficient as C/C++ and supports * Functional programming. ATS uses eager call-by-value eval, it also supports lazy call-by-need evaluation. Linear types in ATS can often make FP run with high efficiency * Imperative programming. While features considered dangerous in other languages (e.g., explicit pointer arithmetic and explicit memory mgmt) are allowed in ATS, the type system of ATS is still able to guarantee that no run-time errors can occur * Concurrent programming. ATS, equipped with a multicore-safe implementation of garbage collection, can support multithreaded programming through the use of pthreads and parallel let * Modular programming. The module system of ATS is largely infuenced by that of Modula-3