caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] unboxing of unary datatypes
@ 2003-01-14  0:08 Hal Daume III
  2003-01-14  4:38 ` Nicolas Cannasse
  2003-01-14  9:57 ` Fabrice Le Fessant
  0 siblings, 2 replies; 6+ messages in thread
From: Hal Daume III @ 2003-01-14  0:08 UTC (permalink / raw)
  To: Caml Mailing List

Hi all,

I originally had a very calculation intensive program which used a data
type which looked like:

> type foo = Foo of float

I could just have easily used floats, but I wanted to ensure that I didn't
do anything stupid (like try to multiply a foo by a float), so I did this
boxing so the type-checker would help me out.

I had always assumed that once the code got past the typechecker, the
ocaml compiler would optimize away the constructor, so that the resulting
code would be as efficient as if I had just done

> type foo = float

But based on some non-scientific tests, it seems that this isn't the case,
and that the original foo type is actually represented using a
pointer-to-float.

I cannot imagine why this is the case (coming from a Haskell world, there
is a difference there between these two types due to laziness, but since
ocaml is strict, I figured this wouldn't be the case).

Can someone explain this to me?  Why doesn't the compiler optimize out the
constructor?

 - Hal

--
Hal Daume III

 "Computer science is no more about computers    | hdaume@isi.edu
  than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2003-01-14 18:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-14  0:08 [Caml-list] unboxing of unary datatypes Hal Daume III
2003-01-14  4:38 ` Nicolas Cannasse
2003-01-14 11:17   ` Florian Hars
2003-01-14 15:15     ` Nicolas Cannasse
2003-01-14  9:57 ` Fabrice Le Fessant
2003-01-14 11:19   ` Christophe Raffalli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).