Browse thread
Polymorphic variant as a witness?
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2008-06-21 (23:08) |
From: | David Teller <David.Teller@u...> |
Subject: | Polymorphic variant as a witness? |
Dear list, I have been thinking for some time about using polymorphic variants to encode some aspects of a types-and-effects type system in OCaml using Camlp4. While the idea is still quite fuzzy, I have the feeling that, if I could have a value (let's call it "witness") with type [> ] ref which I could "touch" into becoming [> `A] ref then [> `A | `B] ref etc. as effects `A, `B, etc. appear in the program, it could provide interesting information on the effects of the program. Now, of course, I can't define a value with type ref [> ] or even with type ref [> `dummy]. That is, when compiling a module consisting only in a declaration such as let witness = ref `dummy I'm faced with the good old "cannot be generalised" error message. This strikes me as normal -- I'm sure that, with the right modifications on witness, I could cause runtime type inconsistencies for any client attempting to read the value of witness. However, in this case, I'm not going to read any value from witness, ever. I only want to "touch" it into becoming something a tad more complex, which I could then look at with ocamlc -i or such. My question is: is there a way to hijack polymorphic variants into doing what I wish? Or to encode this behaviour somehow? Thanks, David -- David Teller Security of Distributed Systems http://www.univ-orleans.fr/lifo/Members/David.Teller Angry researcher: French Universities need reforms, but the LRU act brings liquidations.