从外部包中使用 haskell 类 «默认»:示例请求



试图启动Haskell代理服务器«haxy»。跟

proxyMain :: forall s. HStream s => Settings s -> IO ()

class Default a where
A class for types with a default value.
Methods
def :: a
The default value for this type.
Instances
Default (Cache s), Default (Settings s) 

主要问题是:如何将默认设置传递给proxyMain

还有一个次要问题:作为功能的一部分:: forall s. HStream s =>是什么?

>def只是一个预定义的Settings s对象(它的定义不关心可能需要哪种类型的s(,而不是函数。只需像传递任何其他值一样传递它(但是,正如丹尼尔·瓦格纳指出的那样,使用具体类型,因为def是一个多态常数(。

proxyMain (def :: Settings Foo)
-- Or, using the TypeApplication extension
-- proxyMain @Foo def

(其中Foo是您正在使用的HStream实例的任何类型(。

forall s . HStream s是一个约束(forall s是可选的;它可以写proxyMain :: HStream s => Settings s -> IO ()(。理论上,曾经可以创建类型Settings Int的值。如果没有这种限制,proxyMain会接受这一点作为其论点。假设Int不是HStream的实例,约束会阻止proxyMain接受它。

最新更新