Introduction
Since 1993, my research activities are based, or use, the functional programming language Scheme.
From September 2003 to September 2006, I was a member of the MIMOSA team (Migration et mobilité : sémantique et applications) INRIA Sophia where I worked mainly on a functional language for Web programming.
Around the Scheme Programming Language
STk
From 1993 to 1999, I have developped the STk package which was a R4RS Scheme interpreter which can access the Tk graphical package. This package offered an efficient CLOS like object oriented system. STk knew its “hour of glory” in late September 1994, when Richard Stallman of the Free Software Foundation posted an article to comp.lang.tcl newsgroup titled Why you should not use Tcl which conducted a nearly one month long flame war ensued. Richard Stallman proposed in this article to use STk instead of Tcl.
Notes:
- After the Tcl flame war, the FSF started the Guile project, which still use the object layer of STk as the basis for its own object layer.
- The object layer of STk has also served as basis for the Gauche object system
- STk has been also been used for teaching CS courses at the University of California, Berkeley. The UCB Scheme interpreter is a derived work of STk.
- I do not develop anymore STk since I develop a new Scheme system called STklos (see below).
Skribe
Skribe is a functional text processor geared toward technical documents authoring (web pages, technical reports, API documentations, etc). Skribe syntax makes it look like a mark-up language (à la HTML), but it is actually a true programming language, provided with high level features (such as objects, higher order functions, regular and syntactic parsing, etc.).From Skribe source files it is possible to produce various targets documents (HTML pages, XML files, Postscript, or PDF files). Skribe is based on the Scheme programming language.
Skribe was a joint developement with Manuel Serrano. It is no more developed.
ScmPkg
ScmPkg is a package distribution system for Scheme.
- ScmPkg provides packages that bring new APIs to Scheme (e.g., network programming, cryptography, encoding, …).
- ScmPkg can be used with the Bigloo and STklos Scheme implementations
- ScmPkg manages automatic package installation and testing
- ScmPkg is not dedicated to one particular Scheme implementation. While using ScmPkg depends on the hosting Scheme system, the APIs it provides are intended to be portable, that is usable by most R5RS Scheme implementations.
ScmPkg is not distributed as a separated archive file. It is in fact embedded in the standard Scheme distributions which support it (for now Bigloo and STklos). Look at the ScmPkg Web page to see the packages and the documentation of the packages which are already available with this system.
STklos
The STklos project started on 1999. STklos is the successor of STk. It is completely different from its ancestor. Whereas, STk was a tree interpreter, STklos use a byte code compiler. The latter upports most of the languages features defined in R5RS. The aim of STklos implementation is to be fast as well as light thanks to its ad-hoc Virtual Machine. It can also be compiled as a library and embedded in an application.
STklos is always developed. See its web page for latest news.
Around Web Programming
During my stay at INRIA, I participated to the definition of the first versions of the HOP programming language. Hop is a higher-order language designed for programming interactive web applications. It exposes a programming model based on two computation levels. The first one is in charge of executing the logic of an application while the second one is in charge of executing the graphical user interface. The main interest of Hop is that a unique program can have some parts which are while the others are executed on the client. Furthermore, communications between client and server are easy to program.
Since, I left INRIA, HOP relies now on the JavaScript Language). It is is now called Hop.js.
Publications
Here are my main publications about the subjects listed before:
- Manuel Serrano and Erick Gallesio – An Adaptive Package
Management System for Scheme -- Montréal, Québec, Canada,
October, 2007, pp. 65-76.
[pdf]
This paper presents a package management system for the Scheme programming language. It is inspired by the Comprehensive Perl Archive Network (Cpan) and various GNU/Linux distributions. It downloads, installs, and prepares source codes for execution. It manages the dependencies between packages. The main characteristic of this system is its neutrality with respect to the various Scheme implementations. It is neutral with respect to the language extensions that each Scheme implementation proposes and with respect to the execution environment of these implementations. This allows the programmer to blend, within the same program, independent components which have been developed and tested within different Scheme implementations.
- Manuel Serrano, Erick Gallesio and Florian Loitsch – HOP, a
language for programming the Web 2.0 -- October, 2006,
pp. 975–985.
[html] [pdf]
Hop is a new higher-order language designed for programming interactive web applications such as web agendas, web galleries, music players, etc. It exposes a programming model based on two computation levels. The first one is in charge of executing the logic of an application while the second one is in charge of executing the graphical user interface. Hop separates the logic and the graphical user interface but it packages them together and it supports strong collaboration between the two engines. The two execution flows communicate through function calls and event loops. Both ends can initiate communications. The paper presents the main constructions of Hop. It sketches its implementation and it presents an example of a simple web application written in Hop.
- Erick Gallesio and Manuel Serrano – Ubiquitous Mail
-- Proceedings of the Sixth Workshop on Scheme and Functional
Programming, Tallinn, Estonia, September, 2005, pp. 69–76.
[html]
Bimap is a tool for synchronizing IMAP servers. It enables two or more IMAP mirrored servers to be modified independently and later on, synchronized. Bimap is versatile so, in addition to synchronizing emails, it can be used for filtering and classifying emails. For the sake of the example, the paper shows automatic emails classification and white-listing programmed with Bimap. Bimap is implemented in Scheme. The most important parts of its implementation are presented in this paper with the intended goal to demonstrate that Scheme is suited for programming tasks that are usually devoted to scripting languages such as Perl or Python. With additional libraries, Scheme enables compact and efficient implementation of this distributed networked application because the main computations that require efficiency are executed in compiled code and only the user configurations are executed in interpreted code.
- Erick Gallesio and Manuel Serrano – Skribe: a Functional
Language for Programming Documents -- Journal of Functional
Programming, 15(5), September, 2005, pp. 751-770.
[html]
Skribe is a functional programming language designed for authoring documents, such as web pages or technical reports. It is built on top of the Scheme programming language. Its concrete syntax is simple and it looks familiar to anyone used to markup languages. Authoring a document with Skribe is as simple as with HTML or LaTeX. Because of the conciseness of its original syntax, it is even possible to use it without noticing that it is a programming language. In Skribe, the ratio “markup/text” is smaller than with the other markup systems we have tested.
Erick Gallesio – STklos Reference Manual -- I3S/RR-2004-41-FR, I3S CNRS / Université de Nice - Sophia Antipolis, november, 2004, pp. 160.
[html] [pdf]Erick Gallesio and Manuel Serrano – Programming Graphical User Interfaces with Scheme -- Journal of Functional Programming, 13(5), September, 2003, pp. 839–866.
[pdf]
This paper presents Biglook, a widget library for an extended version of the Scheme programming language. It uses classes of a Clos-like object layer to represent widgets and Scheme closures to handle graphical events. Combining functional and object-oriented programming styles yields an original application programming interface that advocates a strict separation between the implementation of the graphical interfaces and the user-associated commands, enabling compact source code. The Biglook implementation separates the Scheme programming interface and the native back-end. This permits different ports for Biglook. The current version uses GTK and Swing graphical toolkits, while the previous release used Tk.
- Manuel Serrano and Erick Gallesio – This is Scribe!
-- ACM Scheme Workshop’02, Pittsburgh, Pennsylvania, USA, October,
2002.
[html] [pdf]
This paper presents Scribe, a functional programming language for authoring documents. Even if it is a general purpose tool, it best suits the writing of technical documents such as web pages or technical reports, API documentations, etc. Executing Scribe programs can produce documents of various formats such as PostScript, PDF, HTML, Texinfo or Unix man pages. That is, the very same program can be used to produce documents in different formats. Scribe is a full featured programming language but it looks like a markup language à la HTML.
Erick Gallesio and Manuel Serrano – Biglook: A Widget Library for the Scheme Programming Language -- 2002 Usenix annual technical conference, Freenix track, Monterey, Californie, USA, june, 2002, pp. 85–97.
[pdf]Erick Gallesio and Manuel Serrano – Graphical User Interfaces with Bigloook -- RR~2001-13-FR, I3S CNRS / Université de Nice - Sophia Antipolis, juillet, 2001, pp. 40.
[pdf]Erick Gallesio – Programming the Tk toolit with an OO Scheme -- I3S CNRS / Université de Nice - Sophia Antipolis, 1997.
Erick Gallesio – Un langage objet pour la construction d’interfaces graphiques -- Conférence du GDR de Programmation, Orléans, 21–22 novembre, 1996.
[ pdf ]
Ce papier présente un système graphique construit sur la boîte à outils graphique Tk et sur le langage Scheme. Tk est une “toolkit” graphique portable et très largement diffusée construite au dessus du langage Tcl. Tcl, quant à lui, est un langage de scripts, qui n’est pas adapté au développement de logiciels de taille conséquente. Afin d’améliorer le niveau de programmation de la toolkit Tk, nous avons défini le langage STklos, basé sur Scheme et offrant un système objet basé sur CLOS. Ce langage a permis de redéfinir proprement, sous la forme d’une hiérarchie de classes, tous les objets graphiques de Tk.
- Erick Gallesio – Designing a Meta Object Protocol to wrap a
Standard Graphical Toolkit -- ISOTAS’96, march, 1996,
pp. 137–156.
[pdf]
This paper presents a graphical package which relies on the Tk toolkit and the Scheme programming language. The Tk package is a widely used graphical toolkit built upon the Tcl scripting language. Tcl was not designed as a general purpose programming language and its usage for large-scale software development is generally not suitable. To improve the programming level of the Tk toolkit, we have defined STklos, a Scheme language with a CLOS-like object system. This alternative language has been used to embody the standard Tk widgets in a clean hierarchy of classes, which is presented here. The STklos object system implementation is based on a Meta Object Protocol; this protocol and its usage for accessing the Tk toolkit in an efficient way are also presented in this paper.
Erick Gallesio – STk Reference Manual] -- RT 95-31, I3S CNRS / Université de Nice - Sophia Antipolis, juillet, 1995, pp. 82.
[pdf]Erick Gallesio – Designing a Meta Object Protocol to wrap a Standard Graphical Toolkit -- RT 95-32, I3S CNRS / Université de Nice - Sophia Antipolis, juillet, 1995, pp. 16.
This internal report is a first version of the ISOTAS paper published in March 1996.
- Erick Gallesio – STklos: A Scheme Object Oriented System
dealing with the Tk Toolkit -- Xhibition 94, San Jose, CA,
June, 1994, pp. 63–71.
[ pdf ]
STk is a graphical package which rely on Tk and the Scheme programming language. Concretely, it can be seen as the Tk package where the Tcl language as been “replaced” by a Scheme interpreter. STklos is an object oriented extension of STk. Usage of this object extension facilitates code reuse and the definition of new widgets classes.
- Erick Gallesio – Embedding a Scheme Interpreter in the Tk
Toolkit -- First Tcl/Tk Workshop, Berkeley, June, 1993,
pp. 103–109.
[pdf]
STk is a graphical package which rely on Tk and the Scheme programming language. Concretely, it can be seen as the Tk package where the Tcl language as been “replaced” by a Scheme interpreter. Programming with STk can be done at two distinct levels. First level is quite identical than programming Tk with Tcl. Second level of programming uses a full object oriented system. Those two programming levels and current implementation are described in this paper.