data Sentence = S String
instance Show Sentence where
show (S p) = p
對于輸入
show (S "y")
輸出是
"y"
我應該在我的代碼中添加什么來獲得相同的結果,但我使用“列印”而不是使用關鍵字“show”?
print (S "y")
"y"
uj5u.com熱心網友回復:
show不是關鍵字。它是一個識別符號。它標識一個函式。
為了使用print它而不是它,只需告訴編譯器您希望識別符號print標識與以下相同的函式show:
print = show
如果您想為其添加型別簽名(您不必這樣做,但這是一個好習慣),該簽名必須包含Show約束,因為這就是函式的show來源:
print :: Show a => a -> String
print = show
或者,如果您希望該函式print僅適用于型別Sentence(而不是任何可顯示型別),您可以使您的型別簽名指定:
print :: Sentence -> String
print = show
在這種情況下,Show約束不是必需的,因為編譯器知道型別并且可以查找Show它的實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/343744.html
標籤:哈斯克尔
