Consider the blocks world problem defined at: https://www.d.umn.edu/~gshute/cs2511/projects/Java/assignment6/blocks/blocks.xhtml For the purpose of this exercise assume the following declarations: data Block = A | B | C | D | E | F | G | H type Stack = [Block] type World = (Stack, Stack, Stack) type Trace = [World] Code a function that takes a trace and prints it in a (more) readable form. For example, the world ([],[A,C,G,E],[D,B,F,H]) Should be printed as __________________________________________________________________ A D C B G F E H ----- p q r __________________________________________________________________ There should be a separation line at the beginning and end of a trace and between any two worlds. Do not produce unnecessary multiple blank lines. In your submission, show how the following trace is printed. [([A,B],[],[]),([B],[],[A]),([],[B],[A]),([],[A,B],[])]