Функциональные парсеры: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 59:
symbola :: Parser Char Char
symbola [] = []
symbola (x:xs) | x == ‘a’ = [(xs, ‘a’)]
| otherwise = []
 
Сразу же становится очевидным преимущество списка благоприятных исходов, потому что теперь мы можем вернуть пустой список в том случае, когда разбор невозможен (так как входная строка пуста или не начинается с символа «а»).
Строка 68:
symbol :: Eq s => s -> Parser s s
symbol a [] = []
symbol a (x:xs) | a == x = [(xs, x)]
| otherwise = []
 
Как обычно существует несколько способов определить ту же самую функцию. Если вам нравятся списки, то вы возможно предпочтете следующее определение: