相关疑难解决方法(0)

在F#中实现队列类型

我正在尝试在F#中实现一个队列到目前为止这是我所拥有的,但我认为它的行为更像是一个堆栈:

type 'a queue = NL| Que of 'a * 'a queue;;

let enque m = function
    |NL -> Que(m, NL)
    |Que(x, xs) -> Que(m, Que(x, xs));;

let rec peek  = function
    |NL -> failwith "queue is empty"
    |Que(x, xs) -> x;;

let rec deque  = function
    |NL -> failwith "queue is empty"
    |Que(x, xs) -> xs;;

let rec build = function
    | [] -> NL
    | x::xs -> enque x (build xs);;
Run Code Online (Sandbox Code Playgroud)

除了enque之外,这些操作工作正常,我想这样做,因此它在队列的后面而不是前面添加了一个新元素.

queue f# types

7
推荐指数
2
解决办法
1269
查看次数

Haskell 的标准队列包?

Haskell 有标准的队列实现吗?我看到几个相当成熟的优先级队列实现,但没有简单的队列。Data.Sequence 看起来不错,但我认为我们可以使用更受限制的数据类型获得更好的性能。此外,限制操作(即不是双端队列)可以防止错误从错误的一端出队。

编辑:

澄清一下,我希望有一个成熟的 Haskell 实现,最好是在 Haskell Platform 或 Hackage 中。

queue haskell

2
推荐指数
1
解决办法
1040
查看次数

标签 统计

queue ×2

f# ×1

haskell ×1

types ×1