Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/tests/nofib/spectral/knights/Queue.lhs

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


%               Filename:  Queue.lhs
%               Version :  1.3
%               Date    :  3/4/92

\section{A Queue Abstract data type}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{code}
module Queue(
		Queue, createQueue, addFront, addBack,
		addAllFront, addAllBack, inquireFront,
		inquireBack, removeFront, removeBack, 
		emptyQueue
) where
\end{code}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{code}
type Queue a = [a]
\end{code}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{code}
createQueue::Queue a
createQueue = []

addFront::a -> Queue a -> Queue a
addFront x q = x:q

addBack::a -> Queue a -> Queue a
addBack x q = q ++ [x]

addAllFront::[a] -> Queue a -> Queue a
addAllFront list q = list ++ q

addAllBack::[a] -> Queue a -> Queue a
addAllBack list q = q ++ list

inquireFront::Queue a -> a
inquireFront []    = error "Cannot inquire on empty Queue"
inquireFront (h:t) = h

inquireBack::Queue a -> a
inquireBack []     = error "Cannot inquire on empty Queue"
inquireBack [x]    = x                 
inquireBack (x:xs) = inquireBack xs

removeFront::Queue a -> Queue a
removeFront []    = error "Cannot remove from an empty Queue"
removeFront (h:t) = t

removeBack::Queue a -> Queue a
removeBack []    = error "Cannot inquire on empty Queue"
removeBack [x]   =  []                
removeBack (x:xs) = x:(removeBack xs)

emptyQueue::(Eq a) => Queue a -> Bool
emptyQueue x = x==[]

sizeQueue::Queue b -> Int
sizeQueue xs =  length xs
\end{code}


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].