git.fiddlerwoaroof.com
progs/prelude/PreludeTuplePrims.hi
4e987026
 
 -- This is the interface to the primitives used to implement arbitrary
 -- sized tuples.
 
 interface PreludeTuplePrims where
 
 {-# Prelude #-}
 
 -- The type checker fiddles around with the call to dictSel to use the
 -- dictionary to resolve the overloading of a subexpression.  The call
 -- dictSel (exp dict i) will typecheck exp and use the ith component of
 -- the tupleDict dict to resolve the overloading.  No check is made to ensure
 -- that the type of the dictionary matches the overloaded class!  Beware!
 
 import PreludeData(Int)
 
 data Tuple
 data TupleDicts
 
 
 tupleSize :: TupleDicts -> Int
 tupleSel :: Tuple -> Int -> Int -> a
 dictSel :: TupleDicts -> Int -> a
 listToTuple :: [a] -> Tuple
 -- These are not called by haskell code directly; these are introduced
 -- during dictionary conversion by the type checker.
 tupleEqDict :: a
 tupleOrdDict :: a
 tupleIxDict :: a
 tupleTextDict :: a
 tupleBinaryDict :: a
 
 {-#
 tupleSize ::       LispName("prim.tupleSize"), Complexity(1)
 tupleSel ::        LispName("prim.tupleSel")
 dictSel ::         LispName("prim.dict-sel")
 listToTuple ::     LispName("prim.list->tuple"), NoConversion
 tupleEqDict ::     LispName("prim.tupleEqDict")
 tupleOrdDict ::    LispName("prim.tupleOrdDict")
 tupleIxDict ::     LispName("prim.tupleIxDict")
 tupleTextDict ::   LispName("prim.tupleTextDict")
 tupleBinaryDict :: LispName("prim.tupleBinaryDict")
 
 #-}