I\'ve been doing some OCaml programming lately to learn the language and to get more acquainted with functional programming. Recently, I\'ve started to think that I\'d like
Hey, these are supposed to be Algebraic data types, right?
Right. And algebraic data types are constructed by tagged (aka discriminated) unions and products. What you want is just a (non-tagged) union, which is not an algebraic data type and isn't supported by Haskell. OCaml has polymorphic variants (see other answers).
Typed Scheme does support non-tagged unions, so you may want to check it out.