SML:将元组列表出列

时间:2014-11-17 04:08:21

标签: priority-queue sml smlnj deque

我有一种形式的数据类型:

datatype 'a mlqueue = N | Q of (int * int * 'a) list;

我必须编写一个出列函数

val dequeue : 'a mlqueue -> 'a * 'a mlqueue*

所以如果我的队列是:

val q = Q [(0,0,3),(1,0,4),(1,1,2),(2,0,5),(2,1,6),(2,2,1)];
- dequeue q;
val it = (4,Q [(1,1,2),(2,0,5),(2,1,6),(2,2,1)]) : int * int mlqueue

这是我的问题:

fun dequeue (Q []) = raise Empty | dequeue (Q((l,p,v)::xs)) = (v, Q xs);

这种形式的函数不会修改原始队列,当我第二次调用dequeue时,它会提供与第一次相同的输出。

有人可以帮忙告诉我如何写这个功能吗?

0 个答案:

没有答案