feat(users/Profpatsch/netencode): Add initial Haskell parser
A simple categorical parser that does not implement Monad, and does not contain an `m` and some rudementary error message handling. In the future I’d probably want to wrap everything in an additional `m`, so that subparsers can somehow use `Selective` to throw errors from within `m` that contain the parsing context if at all possible. Hard to do without Monad, I have to say. Not even stuff like `StateT` works without the inner `m` implementing `Monad`. Change-Id: I1366eda606ddfb019637b09c82d8b0e30bd4e318 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7797 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
This commit is contained in:
parent
8cdefc5b25
commit
cd40585ea4
7 changed files with 169 additions and 45 deletions
|
|
@ -1,4 +1,3 @@
|
|||
{-# LANGUAGE GHC2021 #-}
|
||||
{-# LANGUAGE ImplicitParams #-}
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE MagicHash #-}
|
||||
|
|
@ -52,10 +51,10 @@ module MyPrelude
|
|||
when,
|
||||
unless,
|
||||
guard,
|
||||
ExceptT,
|
||||
ExceptT (..),
|
||||
runExceptT,
|
||||
MonadError,
|
||||
throwError,
|
||||
MonadThrow,
|
||||
throwM,
|
||||
MonadIO,
|
||||
liftIO,
|
||||
MonadReader,
|
||||
|
|
@ -79,6 +78,8 @@ module MyPrelude
|
|||
traverseFold,
|
||||
traverseFold1,
|
||||
traverseFoldDefault,
|
||||
MonadTrans,
|
||||
lift,
|
||||
|
||||
-- * Data types
|
||||
Coercible,
|
||||
|
|
@ -145,15 +146,15 @@ where
|
|||
import Control.Applicative ((<|>))
|
||||
import Control.Category (Category, (>>>))
|
||||
import Control.Monad (guard, join, unless, when)
|
||||
import Control.Monad.Catch (MonadThrow (throwM))
|
||||
import Control.Monad.Except
|
||||
( ExceptT,
|
||||
MonadError,
|
||||
( ExceptT (..),
|
||||
runExceptT,
|
||||
throwError,
|
||||
)
|
||||
import Control.Monad.IO.Class (MonadIO, liftIO)
|
||||
import Control.Monad.Identity (Identity (Identity))
|
||||
import Control.Monad.Reader (MonadReader, asks)
|
||||
import Control.Monad.Trans (MonadTrans (lift))
|
||||
import Data.Bifunctor (Bifunctor, bimap, first, second)
|
||||
import Data.ByteString
|
||||
( ByteString,
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ library
|
|||
, profunctors
|
||||
, containers
|
||||
, error
|
||||
, exceptions
|
||||
, bytestring
|
||||
, mtl
|
||||
, hspec
|
||||
|
|
@ -38,4 +39,4 @@ library
|
|||
, nicify-lib
|
||||
, ansi-terminal
|
||||
, vector
|
||||
default-language: Haskell2010
|
||||
default-language: GHC2021
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue