packages feed

cassette-0.2.0: src/Text/Cassette/Number.hs

-- | Combinators to handle number literals.

module Text.Cassette.Number where

import Control.Category ((.))
import Control.Lens qualified as Lens
import Prelude hiding ((.))
import Text.Cassette.Char
import Text.Cassette.Combinator
import Text.Cassette.Lead
import Text.Cassette.Prim

-- | An integer literal, positive or negative.
int :: PP Int
int =
    intL --> some digit <>
    intL --> consL --> satisfy (== '-') . some digit
  where
    intL = isoL (Lens.iso show read)