Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Consider a data type for logical expressions data Expr = Var String Or [Expr] And [Expr] -- A variable with given name | |

Consider a data type for logical expressions data Expr = Var String Or [Expr] And [Expr] -- A variable with

Consider a data type for logical expressions data Expr = Var String Or [Expr] And [Expr] -- A variable with given name | | | Not Expr deriving (Eq, Show) Write a function collect :: Expr -> ([String], Int), which col- lects a list of unique variable names in an expression, and the total number of times a "Not" appears. You may write helper functions if you wish. For example > expr = And [Var "a", Or [Var "a", Var "b"], Not (Var "c")] > collect expr ( ["a", "b", "c"], 1)

Step by Step Solution

There are 3 Steps involved in it

Step: 1

To implement the collect function for the Expr data type you can use a recursive approach to travers... blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Programming Language Pragmatics

Authors: Michael L. Scott

4th Edition

0124104096, 978-0124104099

More Books

Students also viewed these Programming questions

Question

Discuss essential concepts of family therapy.

Answered: 1 week ago