text :: String -> String
text (x:xs)
| length xs >= 0 = (func x morse) " " text xs
| otherwise = ""
當我執行它時,它實際上像我想象的那樣作業,但我還收到一條例外訊息:“(48,1)-(50,35):函式文本中的非窮盡模式”。我認為缺少一些東西,但不知道究竟是什么。
uj5u.com熱心網友回復:
text :: String -> String
text [] = ""
text (x:xs) = func x morse " " text xs
當您進行模式匹配時,理想情況下,模式需要詳盡無遺。您在原始代碼中所做的是模式匹配但錯過了空字串案例。然后你在警衛中處理空字串案例。這是一種反模式。只需匹配模式中的空字串并洗掉守衛。
我還洗掉了周圍的括號,func x morse因為 它的優先級低于函式應用程式,所以括號是多余的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/350113.html
標籤:哈斯克尔
