view exercises/src/AdditionParser.hs @ 30:8bf7ca2663d2

Advanced AdditionParser
author Markus Kaiser <markus.kaiser@in.tum.de>
date Sat, 12 Jan 2013 14:36:43 +0000
parents 53732b9605c7
children
line wrap: on
line source

module AdditionParser where

import Data.Char
import Parser

digit :: Parser Char Char
digit = one isDigit

number :: Parser Char String
number = list1(one isDigit)

addition :: Parser Char [String]
addition = number *** optional (item '+' *** addition >>> snd) >>> ints
        where
        ints (x, Just y) = x : y
        ints (x, _) = [x]

test = addition "2134+123+1+2+3"