question about type lits and optimization in ghc
Carter Schonwald
carter.schonwald at gmail.com
Tue Aug 21 20:14:02 CEST 2012
Hey GHC folks!
In the case where type lits (naturals specifically) are statically known
(rather than abstract), is it possible to have a sort of static copy
propagation / Singelton simplification happen at compile time? (Ie can GHC
do such things with type lits as presently implemented?)
a simple example might be that a statically sized matrix, and being able to
specialize the stride and bounds checking at compile time (pseudo code
example follows)
data Mat (row::Nat) (col::Nat) elem = ... some vector representation
index:: (Mat r c el) -> (Word,Word) -> el
index mt ix = ... some stride based indexing calculation that gets at the
"r" and "c" numbers via the singletons to translate the ix tuple into the
index into the underlying vector
representation
{-# perhaps an inline pragma? #-}
indexSpec3x3:: (Mat 3 3 el) -> (Word, Word) -> el
indexSpec3x3 smat ix = smat `index` ix
under what circumstances can i get something like the body of indexSpec3x3
to use the static type level natural number machinery to partially
specialize the computation?
Does my question even make sense as phrased?
thanks!
-Carter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20120821/3d0e9060/attachment.htm>
More information about the Glasgow-haskell-users
mailing list