I am Studying for an exam, and i have just come accross the following 3 questions, i am not familiar with the functions, therefore i would appreciate any help.

!! i have already created painting 2 & 3 all i need is the 3 functions, for the three different tasks as shown below. the functions are the showPic, sizeRaw and isPic.

questions are:

1)  – Define showPic :: Canvas -> IO () for displaying pictures on the
terminal. Examples:

Cw2010> showPic (painting 2)
+---+---+---+---+---+
| a | n | e | x | a |
+---+---+---+---+---+
| m | p | l | e | t |
+---+---+---+---+---+
| e | x | t | i | s |
+---+---+---+---+---+
| s | h | o | w | n |
+---+---+---+---+---+

Cw2010> showPic (painting 3)
+---+---+---+---+---+---+---+
| A | n | o | t | h | e | r |
+---+---+---+---+---+---+---+
| | t | e | s | t | ! | |
+---+---+---+---+---+---+---+

2)  – Furthermore, define sizeRaw :: Canvas -> (Int, Int) for finding
out the size of a raw picture as demonstrated here.
Cw2010> sizeRaw ["anexa","mplet","extis","shown"]
(5,4)

3)  – Finally, define isPic :: Canvas -> Bool for checking a particular
necessary condition which items of type Canvas must satisfy (full or
raw). The condition you should check for is whether all the ‘rows’ of
the input have the same length. (It may be assumed that the input
of isPic is of type Canvas.) Examples:

Cw2010> isPic (painting 3)
True
Cw2010> isPic (painting 4)
False

Suggestion. I found it useful in my implementation to define and use
here the auxiliary function isEqual :: [Int] -> Bool; example:

Cw2008> isEqual [8,8,8,8]
True
Cw2008> isEqual [8,8,4,8]
False
You may wish to define and use isEqual in your implementation of
isPic too.