diff options
Diffstat (limited to 'dev-haskell/alex/files/alex-3.1.4-ghc-7.10.patch')
| -rw-r--r-- | dev-haskell/alex/files/alex-3.1.4-ghc-7.10.patch | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/dev-haskell/alex/files/alex-3.1.4-ghc-7.10.patch b/dev-haskell/alex/files/alex-3.1.4-ghc-7.10.patch new file mode 100644 index 000000000000..cb422b60d7c5 --- /dev/null +++ b/dev-haskell/alex/files/alex-3.1.4-ghc-7.10.patch @@ -0,0 +1,24 @@ +diff --git a/templates/wrappers.hs b/templates/wrappers.hs +index a1a1a6d..c020cc7 100644 +--- a/templates/wrappers.hs ++++ b/templates/wrappers.hs +@@ -284,6 +284,19 @@ runAlex input (Alex f) + + newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) } + ++instance Functor Alex where ++ fmap f a = Alex $ \s -> case unAlex a s of ++ Left msg -> Left msg ++ Right (s', a') -> Right (s', f a') ++ ++instance Applicative Alex where ++ pure a = Alex $ \s -> Right (s, a) ++ fa <*> a = Alex $ \s -> case unAlex fa s of ++ Left msg -> Left msg ++ Right (s', f) -> case unAlex a s' of ++ Left msg -> Left msg ++ Right (s'', b) -> Right (s'', f b) ++ + instance Monad Alex where + m >>= k = Alex $ \s -> case unAlex m s of + Left msg -> Left msg |
