On 16/01/07, Seth J. Fogarty <sfogarty@gmail.com> wrote:

2) When I have different overlapping kinds of data, with a common root
and common parent, and functions that are only defined on certain
branches of the 'type tree.' This would be the hardest to replicate.

Could this be replicated by either
using overloaded non-polymorphic variants, meaning that say Int of int can be shared by many types (almost like polymorphic variants, just that it is declared, and thus (at least I believe so) more typesafe)

using records with overloaded fields and subtyping, so that you could have:
type top = {common of string}
type one_level_deep = {top | my_only of int}

type independent = {my_only of string}
so this would be possible:
let to_str x -> x.common

to_str {common = "first"}; to_str {common = "second"; my_only = 0}
?

- Tom