ushalow
[clean-tests.git] / old / contparse / test.icl
1 module test
2
3 import StdEnv
4
5 import Data.Tuple
6 import Data.Functor
7 import Control.Applicative
8 import Control.Monad
9
10 instance Functor ((,,) a b) where fmap f (x, y, z) = (x, y, f z)
11
12 :: Parser t s m a = Parser (s [t] -> m (s, [t], a))
13
14 runParser (Parser t) = t
15
16 instance Functor (Parser t s m) | Functor m where fmap f fa = Parser \s t->fmap f <$> runParser fa s t
17 instance pure (Parser t s m) | Applicative m where pure a = Parser \s t->pure (s, t, a)
18 instance <*> (Parser t s m) | Monad m where (<*>) fab fa = ap fab fa
19 instance Monad (Parser t s m) | Monad m where bind ma a2mb = Parser \s t->runParser ma s t >>= \(s, t, a)->runParser (a2mb a) s t
20
21 Start = 42