
2008/10/20 Luke Palmer
On Sun, Oct 19, 2008 at 5:05 PM, Don Stewart
wrote: In general, being able to specialise polymorphic structures so they look like unpacked monomorphic ones would be awesome.
(!Int, !Bool) -> (,) {-# UNPACK #-}!Int {-# UNPACK #-}!Bool
I repeat my concern about this notation and the implications thereof. (!Int, !Bool) cannot be passed to a function accepting (a,b).
However, I feel there's something very useful here that should be fleshed out rather than hacked. For example, a theory of composable strict structures in a lazy language.
This paper might be of interest to you, assuming you haven't seen it: http://research.microsoft.com/~simonpj/papers/not-not-ml/index.htm. It doesn't really deal with the issue of UNPACKed data structures, but does show the first steps towards making sense of types like [!Int] vs [Int] (if we consider !Int as an "ML-style Int" (albeit a boxed one) and Int as the vanilla Haskell flavour). Cheers, Max