- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
breakPar :: (Token -> Bool) -> [Token] -> Either String ([Token], [Token])
breakPar _ [] = Right ([], [])
breakPar p xs@(x:xs')
| x == TLPar = let t = takePar xs'
in case t of
Left err -> t
Right r -> let tt = breakPar p b
(a,b) = r
in case tt of
Left err -> t
Right rr -> let (y, z) = rr
in Right ([x] ++ a ++ y, z)
| p x = Right ([],xs)
| otherwise = checkEither (breakPar p xs') (first ((:) x))
CHayT 30.11.2015 09:27 # 0
kegdan 30.11.2015 09:44 # +1
Abbath 01.12.2015 17:25 # +2
Можно заменить на
CHayT 01.12.2015 17:46 # 0
мне что-то показалось, что они не просто Left возвращают в случае ошибки
Abbath 02.12.2015 12:01 # 0
guest 22.01.2016 02:36 # 0