[Arrays] Random Access Times ?

Ron de Bruijn rondebruijn@yahoo.com
Thu, 8 May 2003 12:30:16 -0700 (PDT)


--- Hal Daume III <hdaume@ISI.EDU> wrote:
> You need -fglasgow-exts to get the type signatures. 
> you can get around it
> with:
> 
> instance MArray IOUArray Foo IO where
>   unsafeRead arr = do
>     arr2 <- myCast
>     ...
>     where myCast :: IOUArray i Foo -> IO (IOUArray i
> Int)
>           myCast = unsafeCastIOUArray
> 
> > There is only a small problem: there is no such
> > function as unsafeRead or unsaferead, at at least
> not
> > in GHC (I saw unsafeThaw, but that also didn't
> work). 
> 
> oh come on, do you really believe that?
> 
> Prelude Data.Array.MArray> :info MArray
> -- MArray is a class
> class (HasBounds a, Monad m) => MArray a :: (* -> *
> -> *) e m :: (*
>                                                     
>              ->
> *) where {
>     newArray ::
>         forall i. (Ix i) => (i, i) -> e -> m (a i e)
>         {- has default method -};
>     newArray_ ::
>         forall i. (Ix i) => (i, i) -> m (a i e)
>         {- has default method -};
>     Data.Array.Base.unsafeRead ::
>         forall i. (Ix i) => a i e -> Int -> m e;
>     Data.Array.Base.unsafeWrite ::
>         forall i. (Ix i) => a i e -> Int -> e -> m
> ();
>     }
> 
> 
> 
> perhaps importing Data.Arary.Base might help :)
> 
>  - hal
> 

It's true when you type that in, it seems there is
such a function, but I can't find it anywhere in the
documentation (or is there some reason for this). It
probably has to do with the forall keyword, that I
just looked up in the GHC usermanual. What I think the
forall keyword essentially does is defining within a
dataconstructor what types of values there can be in
certain places, dependant of each other (so it's like
a kind of multi-container), but that doesn't explain
why unsafeRead is nowhere to be found in the
documentation and unsafeRead is a function.    

P.S. I think you meant Data.Base.Array(minor detail). 

Greets Ron










__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com