在许多语言中,有一些方法可以创建称为透明代理(或transproxy)的东西,用于执行RPC甚至调用SQL函数。例如,在C#中,我们都可以使用元编程(使用IOC)或DLR来执行此操作。在Haskell中是否有任何方法可以创建透明代理?假设我们有一些服务,在创建代理变量后,我们必须能够调用'myFunc',如下所示:
proxy myFunc arg1 arg2
或类似的东西。我必须使用Template Haskell吗?
答案 0 :(得分:1)
最简单的方法是将代理作为参数传递而不是反过来(大多数时候我只是这样做,而代理只是数据库连接的句柄) 你也可以定义这样的东西:
newtype Proxy = Proxy {withProxy :: (forall a . Proxiable a -> IO a)}
但我认为这不会简化任何事情。