[Hat] Any guesses?

Thomas Davie tom.davie at gmail.com
Sat Oct 29 20:50:29 EDT 2005


Anyone know how to fix the following type error is translated code?

Hat/MySet.hs:636:60:
     Couldn't match `Hat.Hat.R (Hat.Hat.List a)' against  
`Hat.Hat.RefExp'
       Expected type: Hat.Hat.R (Hat.Hat.Fun a b2)
                      -> Hat.Hat.RefExp
                      -> Hat.Hat.R (Hat.Hat.Fun b1 (Hat.Hat.List b))
       Inferred type: Hat.Hat.R (Hat.Hat.Fun a b2)
                      -> Hat.Hat.R (Hat.Hat.List a)
                      -> Hat.Hat.RefExp
                      -> Hat.Hat.R (Hat.Hat.List b2)
     In the fifth argument of `Hat.Hat.app1', namely  
`Hat.PreludeBasic.hmap'
     In the fourth argument of `Hat.Hat.ap2', namely
         `(Hat.Hat.app1 p391v20v391v29
                        p391v20v391v27
                        p
                        Hat.PreludeBasic.amap
                        Hat.PreludeBasic.hmap
                        ff)'

The original code looks like this (and does not cause type errors  
when compiled normally).
map :: (Ord a, Ord b) => (a->b) -> Set a -> Set b
map f = fromList . List.map f . toList

The translated code looks like this:

gmap ::
   (Ord a,Ord b) =>
   T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Fun a b) (T.Fun (Set a)  
(Set b)))

hmap ::
   (Ord a,Ord b) => (T.R (T.Fun a b)) -> T.RefExp -> T.R (T.Fun (Set  
a) (Set b))

gmap pmap p = T.fun1 amap pmap p hmap

hmap ff p =
   T.ap2 p391v9v391v38 p (p391v18v391v18 !. p) (gfromList  
p391v9v391v16 p)
     (T.ap2 p391v20v391v38 p (p391v31v391v31 !. p)
636 >      (T.app1 p391v20v391v29 p391v20v391v27 p Hat.List.amap  
Hat.List.hmap ff)
       (gtoList p391v33v391v38 p))

I have not a clue what I'm up to when it gets this fun.

Bob



More information about the Hat mailing list