--|抽象数据类型示例:高效队列--2016年功能编程课程。--托马斯·哈格伦模块队列(Q,empty,add,isEmpty,front,remove),其中数据Q a=Q[a][a]导出(显示)--|空队列空::Q a空=智能Q[][]--|在后面添加元素添加::a->Q a->Q a加x(Q fs bs)=智能Q fs(x:bs)--|检查队列是否为空是空的::Q a->BoolisEmpty(Q[]_)=真isEmpty _=假--|检查前部元件正面::Q a->a前部(Q(x:fs)bs)=x--|从前面删除元素删除::Q a->Q a删除(Q(x:fs)bs)=智能Q fs bs--不变量:队列不为空=>前列表不为空--一个聪明的构造函数smartQ[]bs=Q(反向bs)[]smartQ fs bs=Q fs bs实例公式a=>公式(Q a),其中q1==q2=toList q1==到列表q2toList(Q fs bs)=fs++反向bs