Range expansion: Difference between revisions

m
→‎Haskell :: With a parser: Pruned some imports which are no longer needed.
(Added Delphi example)
m (→‎Haskell :: With a parser: Pruned some imports which are no longer needed.)
Line 1,824:
<lang haskell>{-# LANGUAGE FlexibleContexts #-}
 
import Control.Applicative (Applicative((<*>), (*>)), (<$>))
import Text.Parsec
 
expandRange :: String -> Maybe [Int]
expandRange = either (const Nothing) Just . parse rangeParser ""
either
(const Nothing)
Just
. parse rangeParser ""
 
rangeParser ::
:: (Enum a, Read a, Stream s m Char) =>
=> ParsecT s u m [a]
rangeParser = concat <$> (item `sepBy` char ',')
where
Line 1,839 ⟶ 1,842:
n2 <- option n1 (char '-' *> num)
return [n1 .. n2]
num =
num = read `dot` (++<>) <$> option "" (string "-") <*> many1 digit
<*> many1 digit
dot = (.) . (.)
 
9,655

edits