Browse thread
Question on writing efficient Ocaml.
[
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: | 2007-01-06 (01:15) |
From: | brogoff <brogoff@s...> |
Subject: | Re: [Caml-list] Question on writing efficient Ocaml. |
On Fri, 5 Jan 2007, Nathaniel Gray wrote: > On 12/29/06, Mattias Engdegård <mattias@virtutech.se> wrote: > > Is there a reason for this? To my innocent eyes, code like > > > > type length = Length of int > > > > looks quite reasonable and could be useful at times. > > I agree. Sadly, the ocaml devs don't. > > http://caml.inria.fr/mantis/view.php?id=3978 > > As Xavier points out, one can use modules to hide basic types, but > this is pretty clumsy in practice. There's rumored to be a solution > using phantom types, but my attempts don't work: You need to use modules to make phantom types work. Something like this module type BOINK = sig type 'a t val inj : int -> 'a t val prj : 'a t -> int val plus : 'a t -> 'a t -> 'a t end;; module Boink : BOINK = struct type 'a t = int let inj n = n let prj t = t let plus x y = x + y end;; let f : string Boink.t = inj 20;; let g : int Boink.t = inj 30;; Boink.plus f g;; I didn't compile that, but you get the idea... -- Brian