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

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

Навигация