summaryrefslogtreecommitdiff
path: root/examples/gfcc/compiler/ErrM.hs
blob: 85c311a88267147ba03db969f5eb8ee7547fbb2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- BNF Converter: Error Monad
-- Copyright (C) 2004  Author:  Aarne Ranta

-- This file comes with NO WARRANTY and may be used FOR ANY PURPOSE.
module ErrM where

-- the Error monad: like Maybe type with error msgs

data Err a = Ok a | Bad String
  deriving (Read, Show, Eq)

instance Monad Err where
  return      = Ok
  Ok a  >>= f = f a
  Bad s >>= f = Bad s