![](/img/trans.png)
[英]Why doesn't my Haskell program run in Docker with Alpine or Scratch?
[英]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.