假設我需要不同的輸出,具體取決於函數的多態參數的類型。我的初始嘗試失敗一些神祕的錯誤消息:多態參數類型的模式匹配 - 替代
choice :: a -> Int
choice (_ :: Int) = 0
choice (_ :: String) = 1
choice _ = 2
然而,我們可以通過在不同的數據構造包裹所需類型固定,很容易並使用這些中的模式匹配:
data Choice a = IntChoice Int | StringChoice String | OtherChoice a
choice :: Choice a -> Int
choice (IntChoice _) = 0
choice (StringChoice _) = 1
choice (OtherChoice _) = 2
問題:你知道一個方法來繞過這個嗎? Haskell2010,GHC或允許我使用第一個變體(或類似的東西)的任何擴展中有沒有功能?
'Data.Typeable'允許的查詢類型在運行時,但它不應該輕易使用。 – chi