HASKELL PROGRAMMING LANGUAGE Problem 4 [7 POINTS]: Define a module named “ListIntStack” to represent the STACK data structure. We implement the STACK with Int list. For example, [3,2,1] represents a STACK with three elements and the top element is 3. The “ListStack” module is described as follows: (1) [1 POINTS]: The module includes a data type named “Stack”, which only has one value constructor named “IntStack”. The “IntStack” constructor only has one field represented by an Int list. (2) [5 POINTS]: The module has five functions: “empty”, “push”, “pop”, “top”, “isEmpty”, which are described as follows. (2.1) The “empty” function creates an empty STACK (represented by an empty Int list). The function type is empty :: Stack (2.2) The “push” function pushes an element on the top of the input STACK. The function type is push :: Int -> Stack -> Stack (2.3) The “pop” function pops the top element off the input STACK. If the input STACK is empty, the “pop” function returns an empty stack. The function type is pop :: Stack -> Stack (2.4) The “top” function returns the top element of the input STACK. It returns “Nothing” if the input STACK is empty. The function type is top :: Stack -> Maybe Int (2.5) The “isEmpty” function checks whether the input STACK is empty. It returns “True” if and only if the input STACK is empty. The function type is isEmpty :: Stack -> Bool (3) [1 POINTS]: The module exports all five functions and does NOT export any value constructors of “Stack” data type.

Question-AnswerCategory: Computer ScienceHASKELL PROGRAMMING LANGUAGE Problem 4 [7 POINTS]: Define a module named “ListIntStack” to represent the STACK data structure. We implement the STACK with Int list. For example, [3,2,1] represents a STACK with three elements and the top element is 3. The “ListStack” module is described as follows: (1) [1 POINTS]: The module includes a data type named “Stack”, which only has one value constructor named “IntStack”. The “IntStack” constructor only has one field represented by an Int list. (2) [5 POINTS]: The module has five functions: “empty”, “push”, “pop”, “top”, “isEmpty”, which are described as follows. (2.1) The “empty” function creates an empty STACK (represented by an empty Int list). The function type is empty :: Stack (2.2) The “push” function pushes an element on the top of the input STACK. The function type is push :: Int -> Stack -> Stack (2.3) The “pop” function pops the top element off the input STACK. If the input STACK is empty, the “pop” function returns an empty stack. The function type is pop :: Stack -> Stack (2.4) The “top” function returns the top element of the input STACK. It returns “Nothing” if the input STACK is empty. The function type is top :: Stack -> Maybe Int (2.5) The “isEmpty” function checks whether the input STACK is empty. It returns “True” if and only if the input STACK is empty. The function type is isEmpty :: Stack -> Bool (3) [1 POINTS]: The module exports all five functions and does NOT export any value constructors of “Stack” data type.
Mazurek Gravity Staff asked 1 year ago

Problem 4 [7 POINTS]: Define a module named “ListIntStack” to represent the STACK data structure. We implement the STACK with Int list. For example, [3,2,1] represents a STACK with three elements and the top element is 3.

The “ListStack” module is described as follows:

(1) [1 POINTS]: The module includes a data type named “Stack”, which only has one value constructor named “IntStack”. The “IntStack” constructor only has one field represented by an Int list.

(2) [5 POINTS]: The module has five functions: “empty”, “push”, “pop”, “top”, “isEmpty”, which are described as follows.

(2.1) The “empty” function creates an empty STACK (represented by an empty Int list). The function type is

empty :: Stack

(2.2) The “push” function pushes an element on the top of the input STACK. The function type is

push :: Int -> Stack -> Stack

(2.3) The “pop” function pops the top element off the input STACK. If the input STACK is empty, the “pop” function returns an empty stack. The function type is

pop :: Stack -> Stack

(2.4) The “top” function returns the top element of the input STACK. It returns “Nothing” if the input STACK is empty. The function type is

top :: Stack -> Maybe Int

(2.5) The “isEmpty” function checks whether the input STACK is empty. It returns “True” if and only if the input STACK is empty. The function type is

isEmpty :: Stack -> Bool

(3) [1 POINTS]: The module exports all five functions and does NOT export any value constructors of “Stack” data type.