From: sof Date: Fri, 20 Mar 1998 09:42:34 +0000 (+0000) Subject: [project @ 1998-03-20 09:42:30 by sof] X-Git-Tag: Approx_2487_patches~847 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=748ebf79f2e1ec73370b7beb70ad8d9376e0dcdc;p=ghc-hetmet.git [project @ 1998-03-20 09:42:30 by sof] Add Functor instances --- diff --git a/ghc/lib/exts/LazyST.lhs b/ghc/lib/exts/LazyST.lhs index 1d9cf60..29c7814 100644 --- a/ghc/lib/exts/LazyST.lhs +++ b/ghc/lib/exts/LazyST.lhs @@ -39,6 +39,14 @@ import PrelGHC newtype ST s a = ST (PrelST.State s -> (a,PrelST.State s)) +instance Functor (ST s) where + map f m = ST $ \ s -> + let + ST m_a = m + (r,new_s) = m_a s + in + (f r,new_s) + instance Monad (ST s) where return a = ST $ \ s -> (a,s) diff --git a/ghc/lib/std/PrelST.lhs b/ghc/lib/std/PrelST.lhs index b3b5411..8513a6a 100644 --- a/ghc/lib/std/PrelST.lhs +++ b/ghc/lib/std/PrelST.lhs @@ -27,6 +27,11 @@ newtype ST s a = ST (State# s -> STret s a) data STret s a = STret (State# s) a +instance Functor (ST s) where + map f (ST m) = ST $ \ s -> + case (m s) of { STret new_s r -> + STret new_s (f r) } + instance Monad (ST s) where {-# INLINE return #-} {-# INLINE (>>) #-}