From 98329e0a3dd4f78b5d815ac3896272ec70904901 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 11 Dec 2025 10:28:11 +0100 Subject: Add remaining haskell book exercises --- Haskell-book/24/LearnParsers/src/LearnParsers.hs | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Haskell-book/24/LearnParsers/src/LearnParsers.hs (limited to 'Haskell-book/24/LearnParsers/src/LearnParsers.hs') diff --git a/Haskell-book/24/LearnParsers/src/LearnParsers.hs b/Haskell-book/24/LearnParsers/src/LearnParsers.hs new file mode 100644 index 0000000..9c349fd --- /dev/null +++ b/Haskell-book/24/LearnParsers/src/LearnParsers.hs @@ -0,0 +1,45 @@ +module LearnParsers where + +import Text.Trifecta + +stop :: Parser a +stop = unexpected "stop" + +-- read a single character '1' +one = char '1' + +-- read a single character '1', then die +one' = one >> stop +-- equivalent to char '1' >> stop + +-- read two characters, '1', and '2' +oneTwo = char '1' >> char '2' + +-- read two characters, +-- '1' and '2', then die + +oneTwo' = oneTwo >> stop + +testParse :: Parser Char -> IO () +testParse p = print $ parseString p mempty "123" + +pNL s = putStrLn ('\n' : s) + +oneTwoThree :: Parser String +oneTwoThree = choice + [ string "123" + , string "12" + , string "1" + ] + +oneTwoThree' = oneTwoThree >> stop + +testParse' :: Parser String -> IO () +testParse' p = print $ parseString p mempty "123" + +oneTwoThree'' :: Parser Char +oneTwoThree'' = choice + [ one + , oneTwo + , char '1' >> char '2' >> char '3' + ] -- cgit v1.2.3