Итак, у меня назначено задание, и он просит использовать RegEx с Haskell, чтобы найти решение. Я свяжу это внизу. По сути, мои проблемы не лежат в Regex, я понимаю, как найти 2As, используя Regex нормально, но когда дело доходит до Haskell и этого объявления, я не знаю, как на самом деле сделать это, не найдя ошибки.
Я попробовал свои собственные реализации RegEx: это [AA] {2} в случае просто нахождения 2 As, но я не могу понять, как заставить его работать в Haskell, и данное заявление было намного более запутанным.
module Project3 where
data RE a
= Symbol a
| Empty
| RE a :+: RE a
| RE a :|: RE a
| Repeat (RE a)
| Plus (RE a)
deriving (Show, Read, Eq, Ord)
data ABC = A | B | C deriving (Show, Read, Eq, Ord)
atMost2As :: RE ABC
atMost2As = undefined
Это текущая проблема. Я пытался возиться с '= ~ "[AA] {2}"' и подобными понятиями, но я все еще получаю ошибки, так как это не требует аргументов.
Язык atMost2As включает в себя именно те строки, в которых A встречается не более двух раз, это то, что он должен дать. В целом, я не могу найти проблему.