Okay, I'm dumb and can't figure this out. I'm migrating hMPI from GHC
4.08 to GHC 5.04 (fun fun) and am having trouble writing an instance of
Storable. The relevant information is:
> import Foreign.Storable
> type MPI_Rank_Type = Int
> newtype MPI_Rank = MPI_Rank MPI_Rank_Type deriving (Eq)
>
> instance Storable MPI_Rank where
> sizeOf (MPI_Rank r) = sizeOf r
> alignment (MPI_Rank r) = alignment r
> peek addr = do r <- peek addr
> return (MPI_Rank r)
> poke addr (MPI_Rank r) = poke addr r
which doesn't work; ghc complains:
/nfs/isd/hdaume/download/hmpi-0.9.3/src/Foo.hs:12:
Couldn't match `MPI_Rank_Type' against `MPI_Rank'
Expected type: MPI_Rank_Type
Inferred type: MPI_Rank
In the first argument of `MPI_Rank', namely `r'
In the first argument of `return', namely `(MPI_Rank r)'
Failed, modules loaded: none.
I have no idea what's wrong. if i make it "...do (r :: Int) <- ..." it
complains:
/nfs/isd/hdaume/download/hmpi-0.9.3/src/Foo.hs:12:
Couldn't match `Int' against `MPI_Rank'
Expected type: Int
Inferred type: MPI_Rank
When checking the pattern: r :: Int
In a 'do' expression pattern binding: (r :: Int) <- peek addr
Failed, modules loaded: none.
it's like it doesn't realize that "peek" is part of the class and can be
overloaded.
someone please clear this up and tell me what obvious thing i'm missing...
Thanks!
- Hal
--
Hal Daume III
"Computer science is no more about computers | [EMAIL PROTECTED]
than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell