From bde9dfef3a80a155c83fd2e8570e782192aa8402 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Thu, 20 Dec 2018 21:46:34 +0100 Subject: Bring up to date --- Sil/Util/Parser.dcl | 8 ++++++-- Sil/Util/Parser.icl | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'Sil/Util') diff --git a/Sil/Util/Parser.dcl b/Sil/Util/Parser.dcl index e0046fa..2c34d83 100644 --- a/Sil/Util/Parser.dcl +++ b/Sil/Util/Parser.dcl @@ -2,7 +2,8 @@ definition module Sil.Util.Parser from StdOverloaded import class ==, class toString -from Control.Applicative import class Applicative, class Alternative +from Control.Applicative import class pure, class <*>, class Applicative, + class *>, class <*, class Alternative from Control.Monad import class Monad from Data.Error import :: MaybeError from Data.Functor import class Functor @@ -29,7 +30,10 @@ makeParseState :: [ParseInput a] -> ParseState a :: Parser a b = Parser (*(ParseState a) -> *(MaybeError Error b, *ParseState a)) instance Functor (Parser a) -instance Applicative (Parser a) +instance pure (Parser a) +instance <*> (Parser a) +instance <* (Parser a) +instance *> (Parser a) instance Monad (Parser a) instance Alternative (Parser a) diff --git a/Sil/Util/Parser.icl b/Sil/Util/Parser.icl index eb90408..95b0813 100644 --- a/Sil/Util/Parser.icl +++ b/Sil/Util/Parser.icl @@ -62,11 +62,17 @@ instance Functor (Parser a) where fmap f m = liftM f m -instance Applicative (Parser a) +instance pure (Parser a) +where + pure a = Parser \st -> (Ok a, st) + +instance <*> (Parser a) where - pure a = Parser \st -> (Ok a, st) (<*>) sf p = ap sf p +instance <* (Parser a) +instance *> (Parser a) + instance Monad (Parser a) where bind p f = Parser \st -> case runParser p (commit st) of -- cgit v1.2.3