3 ms·
{-# LANGUAGE OverloadedStrings #-} import Control.Applicative import qualified Data.Attoparsec.Text as P import qualified Data.Text as T
by dan00 14y ago
{-# LANGUAGE OverloadedStrings #-}
import Control.Applicative
import qualified Data.Attoparsec.Text as P
import qualified Data.Text as T
data Address = Address {start :: Int, end :: Int} deriving Show
address = Address <$> hexDigits <*> (dash *> hexDigits)
where
hexDigits = P.string "0x" *> P.hexadecimal
dash = P.char '-'
parse parser str = P.feed (P.parse parser $ T.pack str) T.empty
Put the above into a file like 'parse.hs'.
~> ghci parse.hs
*Main> parse address "0x1-0x1"
Done "" Address {start = 1, end = 1}
You might need to install attoparsec beforehand:
cabal install attoparsec