PLT web server is a web server implemented and programmable in Scheme which tightly integrates and supports the construction of dynamic content generators. SXML is an instance of XML Information set represented in the form of S-expressions. This presentation considers an XML application server based on PLT Scheme web server and SXML.
This talk considers an application of arrows. We extend the normal error monad with an extra arrow-style combinator to enable multiple errors from independant computations to be collected. We look at the data-independance property of the extra combinator which allows the extended capabilities. We also demonstrate an applicative notation and give examples of structuring computations to take advantage of the additional combinator.
In lazy functional programs, programs often are designed as compositions of many small functions, which use intermediate data structures such as lists and trees to communicate with each other. This style of programming makes programs easier to understand and maintain, but less efficient due to their use of intermediate data structures. The goal of deforestation is to automatically transform modular programs that use many intermediate data structures into more efficient, monolithic programs, allowing programmers to concern themselves with writing elegant and readable programs while the compiler takes care of the details of making programs efficient. Deforestation has long been recognized as a useful technique for optimizing lazy functional programs, but effective implementations of it have been lacking. The most influential algorithm for deforestation -- shortcut deforestation -- works by exploiting certain programming patterns, but the unnaturalness of these patterns restricts its usefulness to library functions. Type inference-based deforestation, proposed by Olaf Chitil in 2000, builds on shortcut deforestation and lessens the restrictions imposed by it, making it applicable to arbitrary programs. I will discuss my implementation of type-inference based deforestation.