Browse thread
Polymorphic recursion
[
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-04-04 (23:36) |
From: | Brian Hurt <bhurt@s...> |
Subject: | Re: [Caml-list] Polymorphic recursion |
On Tue, 3 Apr 2007, Loup Vaillant wrote: > I was reading Okasaki's book, "Purely functionnal data structures", > and discovered that ML (and Ocaml) doesn't support non uniforms > function definitions. > > So, even if: > > (**) > type 'a seq = Unit | Seq of ('a * ('a * 'a)seq);; > (**) This way lies GADTs, which are a really neat idea, but even the Haskeller's aren't 100% sure how to implement correctly yet. In any case, there's a fairly simple work around which does work in the current type system, which Okasaki describes IIRC. Basically, you just do: type 'a tuple = Tuple of 'a tuple * 'a tuple | Leaf of 'a;; type 'a seq = Unit | Set of 'a tuple * 'a seq;; which is a bit of a pain, but works. Brian