簡體   English   中英

Haskell:我的程序無法進行轉換

[英]Haskell: my program doesn't make conversion

我編寫了一個簡單的程序來處理已實現的隊列數據結構。 這是我的代碼

transf :: Queue -> [Char]
transf emptyQueue = []  
transf queue = [front queue] ++ transf (dequeue queue)

隊列在哪里

newtype Queue = Q [Char] deriving (Show)

emptyQueue :: Queue
emptyQueue = Q []

queueIsEmpty :: Queue -> Bool
queueIsEmpty (Q []) = True
queueIsEmpty (Q _) = False

enqueue :: Char -> Queue -> Queue
enqueue x (Q q) = Q (q ++ [x])

dequeue :: Queue -> Queue
dequeue (Q (_:xs)) = Q xs
dequeue (Q []) = error "dequeue: empty queue"

front :: Queue -> Char
front (Q (x:_)) = x
front (Q []) = error "front: empty queue"

我的程序不會將隊列轉換為字符串。 問題出在哪兒? 提前致謝。

transf emptyQueue = []

在這里, emptyQueue只是您的參數的名稱。 您沒有針對全局emptyQueue的內容進行模式匹配。 您無法針對此類變量進行模式匹配-僅針對構造函數。

您必須編寫transf (Q [])來匹配空隊列,但是請注意,整個函數可以簡單地定義為transf (Q xs) = xs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM