symparsec-2.0.0: src/Symparsec/Parser/TakeRest.hs
{-# LANGUAGE UndecidableInstances #-}
module Symparsec.Parser.TakeRest ( type TakeRest ) where
import Symparsec.Parser.Common
import qualified Data.Type.Symbol as Symbol
-- | Consume and return the rest of the input string.
--
-- Never fails. May return the empty string.
type TakeRest :: PParser Symbol
data TakeRest s
type instance App TakeRest s = TakeRest' s
type family TakeRest' s where
TakeRest' ('State rem len idx) =
'Reply (OK (Symbol.Take len rem)) ('State (Symbol.Drop len rem) 0 (idx+len))
{-
import GHC.TypeLits
import DeFun.Core
sTakeRest :: SParser SSymbol TakeRest
sTakeRest = Lam $ \(SState srem slen sidx) ->
SReply (SOK _) (SState _ (SNat @0) _)
-}