Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Typing Dynamic Typing in ocaml?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2008-12-17 (19:45)
From: Jacques Carette <carette@m...>
Subject: Typing Dynamic Typing in ocaml?
I have two (related) questions:
1) Has anyone transcribed the TypeRep library into ocaml?

2) How do I embed 'dynamically known' data into a single ocaml 

More specifically, I am experimenting with a (new) language which allows 
deduction and computations to be performed with equal ease on its 
terms.  This language uses ocaml has the host meta-language (ie the 
interpreter is written in ocaml).  I would like to be able to use 
arbitrary ocaml data-structures to represent some of my terms, when 
these terms are known to come from specific theories.  For example, I 
would like to use Bigint to represent integers, but without exposing 
that per se.  Perhaps a better way to phrase this would be to say that I 
want to have a "generic external data container" type in my language 
terms, which I can instantiate in multiple different ways (in the same 
program), with data handled in different modules, without having to 
change the 'generic' data-structure everytime I add a new module.

Polymorphic variants of course come to mind - but they would force me to 
add a new type parameter to all my types, which I would rather avoid.  I 
would be quite happy to use polymorphic variants if I could 'hide away' 
the extra type parameter involved with open variants.  My attempts at 
hiding this parameter (with existentials) has been too successful, in 
that once hidden I can't extract my data from this container anymore 
[which is the correct behaviour for the compiler].

I thought of using objects too, but my data does not really have any 
common structure, so the object would be a pure container.  I cannot see 
any advantage over polymorphic variants, and all the same headaches of 
an 'extra' polymorphic parameter remain.