在下面的代码中,我对返回值所做的foo
只是使用它的Show
接口
foo :: String
foo = "asdf"
main = do
print foo
有没有办法修改类型签名foo
来强制执行这一点,禁止人们将字符串视为字符列表,只让他们通过抽象类型类接口访问它?我认为存在类型可能是可能的,但我不知道如何。
我想这样做的原因是因为在 HDBC 数据库库中,所有功能都可以作为IConnection
类型类的方法使用。我正在编写创建数据库连接的函数,我想知道它的返回类型是否可以反映抽象接口而不是返回具体的 Sqlite3 Connection
。
现在我搜索了一下,发现有一个可用的ConnWrapper数据类型,但我仍然无法理解这一切是如何组合在一起的。返回 ConnWrapper 是唯一的方法吗?