KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm writing a function to simplify a Boolean expression. For example, Nand(A, A) == Not(A) . I've tried to implement this particular rule using pattern matching, like so: -- Operands equivalent - simplify! simplify (Nand q q) = Not (simplify q) -- Operands must be different, so recurse. simplify (Nand q q') = Nand (simplify q) (simplify q') Upon compiling, I get the error: Conflicting definitions for `q' Bound at: boolean.hs:73:21 boolean:73:29 In an equation for `simplify' I think I understand what's going on, and I've worked around it, but I'd just like to know: Why is this sort of pattern matching not possible? Is there an idiomatic workaround? Full disclosure: this is related to homework, but the purpose of the course is not to learn Haskell, and I've solved it my own way anyway.
Tags (comma-separated)
Save Edits
Cancel