From a7d7542dc646a5fd124ef71e71ce260889f1701b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 2 Feb 2016 19:24:50 +0100 Subject: Moved to 1415 directory --- 1415/files/practicum/StdStateMonad.icl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 1415/files/practicum/StdStateMonad.icl (limited to '1415/files/practicum/StdStateMonad.icl') diff --git a/1415/files/practicum/StdStateMonad.icl b/1415/files/practicum/StdStateMonad.icl new file mode 100644 index 0000000..527ac5c --- /dev/null +++ b/1415/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