Question: Question is about Haskell. All solutions must be in Haskell. Exercise 3. Programming with Data Types Here is the definition of a data type for
Question is about Haskell. All solutions must be in Haskell.


Exercise 3. Programming with Data Types Here is the definition of a data type for representing a few basic shapes. A figure is a collection of shapes. The type BBox represents bounding boxes of objects by the points of the lower-left and upper-right hand corners of the smallest enclosing rectangle. type Number = Int type Point = (Number, Number) type Length = Number data Shape = Pt Point | Circle Point Length Rect Point Length Length deriving Show type Figure = (Shape) type BBox = (Point, Point) (a) Define the function width that computes the width of a shape. width :: Shape -> Length For example, the widths of the shapes in the figure f are as follows. f = [Pt (4,4), Circle (5,5) 3, Rect (3,3) 7 2] > map widthf [0,6,7] (b) Define the function bbox that computes the bounding box of a shape. bbox :: Shape -> BBox The bounding boxes of the shapes in the figure f are as follows. > map bbox f [((4,4),(4,4)), ((2, 2), (8,8)), ((3,3), (10,5))] (c) Define the function minx that computes the minimum x coordinate of a shape. minx :: Shape -> Number The minimum x coordinates of the shapes in the figure f are as follows. > map minX f [4,2,3] (d) Define a function move that moves the position of a shape by a vector given by a point as its second argument. move :: Shape -> Point -> Shape It is probably a good idea to define and use an auxiliary function addPt :: Point -> Point -> Point, which adds two points component wise
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
