[Haskell-beginners] Relationship between graphs and queues?

Christopher Howard christopher.howard at frigidcode.com
Fri Aug 12 22:32:50 CEST 2011


I working through the practice problems in Davie's book (by myself) and 
there is one that is not quite clear to me:

"Construct an abstract data type for a queue. Attempt to supply an 
implementation (hidden from the user of the type) which allows access to 
the head of the queue and the construction of a new queue by adding 
elements to the end of an existing one. Both these interface functions 
should operate in time independent of the length of the queue. What 
implications does the this exercise suggest for search and 'updating' 
(by copying all unchanged nodes) a general graph?"

There are two parts to the problem here: 1) defining the data type and 
the interface functions, and 2) indicating the implications for general 
graphs. On the first part I'm a little unclear because I am not sure 
what he means by "allows access to the head of the queue"; i.e., does he 
mean to just get the value in the head of the queue, or pop the value 
off the head of the queue and return the new queue? If the former, a 
solution is not hard, but if the latter, then I am not sure how to solve 
this without somehow transversing the queue, which of course is not a 
time-independent activity. (Even in the implementation for a queue in 
the Data.Graph.Inductive.Internal.Queue, eventually a "reverse" call 
must be made.)

Anyway, maybe if someone could explain the relationship between this 
problem and graphs, I'll see the bigger picture and have a clearer view 
of the problem.

-- 
frigidcode.com
theologia.indicium.us



More information about the Beginners mailing list