Christopher Sharpe <[EMAIL PROTECTED]> writes: 
> 
> {- IOExts library does not seem to work correctly under 
> Windows 98.  Of the following results,
> only t3 is correct.  Thanks for any help you can give.
> 
...
> > t2
> b
> Program error: {_pass hugsIORun_v1295 IOResult_Hugs_Error
> IOResult_Hugs_Return +
> + "c"}
> (173 reductions, 370 cells)
> 
...
> 
> import IOExts
> 
> t1 = newIOArray (1,5) "z"             >>= \a ->
>      readIOArray  a 2                 >>= 
>      putStr                 
> 
> t2 = newIOArray (1,5) "z"             >>= \a ->
>      readIOArray  a 2                 >>= \e2 ->
>      writeIOArray a 2 ("b"++e2++"c") >>
>      readIOArray  a 2                 >>=
>      putStr                 
> 
> 
> t3 = newIORef  "z"                    >>= \a ->
>      readIORef  a                     >>= \e2 ->
>      writeIORef a        ("b"++e2++"c")       >>
>      readIORef  a                     >>=
>      putStr
> 

Hi,

take this with a pinch of salt as I'm not involved
in dev'ing Hugs, but it looks as if the primitive
which IOExts.newIOArray uses is a little bit off.
One line fix to the hugs srcs appended.

--sigbjorn

*** src/array.c.~1~     Fri Mar 19 03:19:00 1999
--- src/array.c Thu Jul 15 08:39:24 1999
***************
*** 372,378 ****
  #if IO_MONAD
  primFun(primIONewArr) {                       /* :: (a,a)
*/
      declArr;                          /*    -> Int
*/
!     aNewSet(5,4,primArg(2));          /*       -> b
*/
      aRetForIO();                      /*          -> IO (IOArray a b)
*/
  }
  
--- 372,378 ----
  #if IO_MONAD
  primFun(primIONewArr) {                       /* :: (a,a)
*/
      declArr;                          /*    -> Int
*/
!     aNewSet(5,4,primArg(3));          /*       -> b
*/
      aRetForIO();                      /*          -> IO (IOArray a b)
*/
  }

Reply via email to