小编Sep*_*epp的帖子

在haskell(模块)中使用队列

我有一个关于这个Haskell代码的问题:

module Queue (Queue, emptyQueue, queueEmpty, enqueue, dequeue, front) where

newtype Queue a = MakeQ([a])

emptyQueue :: Queue a
emptyQueue = MakeQ([])

queueEmpty :: Queue a -> Bool
queueEmpty (MakeQ(q)) = null q

enqueue :: a -> Queue a -> Queue a
enqueue x (MakeQ(q)) = MakeQ(q ++ [x])

dequeue :: Queue a -> Queue a
dequeue (MakeQ(x:q)) = MakeQ(q)

front :: Queue a -> a
front (MakeQ(x:q)) = x
Run Code Online (Sandbox Code Playgroud)

我知道队列通常如何工作以及每个操作主要做什么.我的第一个问题是我不知道如何在拥抱中使用这些操作.在创建空队列后如何创建空队列或将元素放入其中?我尝试了几个命令但是所有这些命令都导致了错误消息,即Make([]),emptyQueue [] ......我知道这些命令非常幼稚,但我绝对不熟悉Haskell而且只需要2周或者.

第二个问题是关于"MakeQ"本身.这只是我们操作名称的声明,对吗?或者它是一个静态的Haskell命令?Imo它也可能是"QQQ"或其他什么.我无法真正测试这是否会导致程序崩溃,因为我不知道如何使用这个模块.

即使我的问题看起来有点愚蠢,如果有人可以给我一个解释或提示,我会很高兴...

queue haskell module

3
推荐指数
1
解决办法
796
查看次数

标签 统计

haskell ×1

module ×1

queue ×1