Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/prelude/PreludeIO/Monad_IO.hs

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


module Prelude where

import NHC.Internal (IO(..))
import DIOError(IOError(..))
-- import CMonad


instance Monad IO where
    x >>= y  = IO (primBind1 x y)
	       where 
		primBind1 (IO xf) y w =
		  case xf w of 
		    Right xv -> case y xv of
                                  IO yv -> yv w
	            Left err -> Left err -- Changing type 
    x >>  y  = IO (primBind2 x y)
	       where 
		primBind2 (IO xf) y w =
		  case xf w of 
		    Right xv -> case y of
                                  IO yv -> yv w
	            Left err -> Left err -- Changing type 
    return a = IO (primReturn a)
               where
                 primReturn a w = Right a
    fail s   = IO (\w -> Left (UserError "call to function `fail'" s))


{-
primBind1       x y good bad    = case x    of IO xf -> xf (primBind1' y good bad) bad
primBind1'        y good bad xv = primBind1'' (y xv) good bad
primBind1'' (IO yf) good bad    = yf good bad

primBind2       x y good bad    = case x    of IO xf -> xf (primBind2' y good bad) bad
primBind2'        y good bad _  = primBind2'' y good bad
primBind2'' (IO yf) good bad    = yf good bad

primReturn a  good bad = good a
-}

{-
               primBind2 (IO xf) y w = primBind3 w (xf w)
               primBind3 w (Right xv) = primBind4 w y
               primBind3 w (Left err) = Left err
               primBind4 w (IO yv) = yv w
-}


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.