OCaml is the actively developed member of the ML family, with an evolution from [ML] to CAML [http://caml.inria.fr] based on the categorial abstract machine (Hindley-Milner), then Objective Caml [http://www.ocaml.org]. It is a strict [functional programming] language of [ML] family, supporting also imperative programming. It features first class modules (Modules as values), polymorphic typing with type inference, generalized algebraic data types and has a pretty wide set of libraries and tools. Also, it is simple and fast, with a quite succinct expressive syntax. The code can be compiled to bytecode, to machine code, or it can be used like a scripting language with direct compilation to byte code. And one can note, that it can use [Tk] for [GUI]s ([labltk] module). Given that Ocaml can be used to create share libraries [http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html#toc137], just like C, it should not be that difficult to use with Tcl - in the classic Tcl as glue for another language fashion. ---- [schlenk] It is not too difficult to wrap an OCaml library as a Tcl extension, but there are some small issue one has to be aware off. * The library should be created as native code, not OCaml Bytecode. * When trying to bridge OCaml Objects to Tcl_Obj representations on needs to be aware of differences like the CAR/CON semantics of OCaml lists vs. the C array style reps of Tcl_ListObj, so you need to study the boxing/unboxing of OCaml Values to make it work, e.g. recursive creation of OCaml lists from Tcl_ListObj. Its easier to work via the String interfaces. <> Language | Functional Programming