0 results from MLton.size

Stephen Weeks MLton@sourcelight.com
Tue, 6 Nov 2001 13:50:06 -0800


> I  remember  this  being  a  problem  discussed before, but is there any work
> around?  I have a huge hash table and am trying to figure out how big it  is.
> When I add the line
>     val _ = warn ("Table size " ^ Int.toString (MLton.size table))
> where warn just sends the result, along with a newline, to stderr, I get
>     Table size 0

The bad interactions happen with one-variant datatypes.

Can you send your hash table code?  Or are you using the lib/mlton
stuff?

One fix may be to add a size function that looks under the hood, as in
the following.

structure S:
   sig
      type t

      val new: int -> t
      val size: t -> int
   end =
   struct
      datatype t = T of int list

      fun new n = T (List.tabulate (n, fn i => i))

      fun size (T l) = MLton.size l
   end

val _ = print (concat [Int.toString (S.size (S.new 100)), "\n"])