【发布时间】:2018-11-05 21:28:34
【问题描述】:
我想将 MySqlFakeClient 和 MySqlHttpClient 转换为它们的通用类型类 MySqlClient,我遇到了这个问题:
以下代码:
loadClient :: MySqlClient client => String -> client
loadClient "fake" = MySqlFakeClient 1 -- <- It's complaining here...
loadClient "prod" = MySqlHttpClient "http://www.google.com"
loadClient _ = error "unknown"
data MySqlHttpClient = MySqlHttpClient String
data MySqlFakeClient = MySqlFakeClient Int
class MySqlClient client where
config :: client -> String
instance MySqlClient MySqlHttpClient where
config (MySqlHttpClient url) = url
instance MySqlClient MySqlFakeClient where
config (MySqlFakeClient myInt) = show myInt
我们不能在 Haskell 中做吗?
【问题讨论】:
-
你可能只想要
data SqlClient = Http String | Fake Int; loadClient :: String -> SqlClient(根本没有类型类)。
标签: haskell