From aebffcc1c786e8cea15fff6f324bf71fc37cbb37 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Fri, 24 Apr 2015 09:10:46 +0200 Subject: updated practicum files --- files/practicum/StdStateMonad.icl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 files/practicum/StdStateMonad.icl (limited to 'files/practicum/StdStateMonad.icl') diff --git a/files/practicum/StdStateMonad.icl b/files/practicum/StdStateMonad.icl new file mode 100644 index 0000000..527ac5c --- /dev/null +++ b/files/practicum/StdStateMonad.icl @@ -0,0 +1,16 @@ +implementation module StdStateMonad + +import StdMonad + +:: ST s a = ST (s -> (a, s)) + +instance return (ST s) where return x = ST (\w = (x, w)) +instance >>= (ST s) where >>= (ST f) g = ST (\w = let (a, w1) = f w + in unST (g a) w1 + ) + +mkST :: (s -> (a,s)) -> ST s a +mkST f = ST f + +unST :: (ST s a) -> s -> (a, s) +unST (ST f) = f -- cgit v1.2.3