Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 Didier Le Botlan's web page
I am currently working on a new design of the Alice Inspector. The Inspector is a tool which can dynamically display
any Alice value, show any run-time changes, and allow the user to explore the structure interactively.
Abstract Types
Hiding the underlying implementation of libraries through abstract types is a well-known technique
for handling complexity. By hiding implementation details, programs can be understood and developed in distinct modules
and the effects of a change can be localized.
I have learnt some of the typing techniques used in functional languages for providing a satisfactory
level of abstract types (usually at the modules level).
First-class polymorphism (which I studied in my PhD) allows the programmer to handle
first-class existential types, using a well-known encoding. This gives encapsulation (or type abstraction)
at the value level, in complement of usual type abstraction, which are at the module level.
Thanks to type inference, the amount of required type annotations is quite small.
More details can be found in my thesis.
The interaction between dynamic loading of components (as found in Alice)
and abstract types yields serious problems.
This topic has been addressed by Andreas Rossberg.
Constraint solving
I develop part of the interface between Alice and the brand new GECODE constraint library by
providing higher-level abstractions more suitable to a functional language.
These abstractions were designed by another member of the team,
namely Guido Tack.
They provide easy way to program search algorithms for constraint solving.
I also use them in the implementation of a modular distributed search engine, which
solves a constraint problem by using different networked computers.
As an example, the Branch & Bound optimization is used transparently in the distributed search:
found solutions are immediately propagated to other computers in order to optimize the rest of the search.
Concurrency
The distributed search engine has to deal with concurrency
(that is, concurrent threads handling common data structures), using Alice primitives.
Another higher-level form of concurrency is the Join-Calculus,
which I have encoded within Alice.
This encoding takes advantage of Alice built-in abstractions such as futures.
A first lesson of German: "Alice" is pronounced "Stockhausen".
My PhD work was about adding first-class polymorphism to the ML language.
The resulting language is called "MLF".
More information can be found on my previous webpage, at INRIA.
Some vegetables are known to have a fractal shape.
I once found a "chou romain" (Roman Cabbage) very similar to broccoli, but far more fractal.
Look at the picture of this fractal vegetable.