Haskell中的透明代理

时间:2016-08-12 21:09:47

标签: haskell metaprogramming rpc

在许多语言中,有一些方法可以创建称为透明代理(或transproxy)的东西,用于执行RPC甚至调用SQL函数。例如,在C#中,我们都可以使用元编程(使用IOC)或DLR来执行此操作。在Haskell中是否有任何方法可以创建透明代理?假设我们有一些服务,在创建代理变量后,我们必须能够调用'myFunc',如下所示:

proxy myFunc arg1 arg2

或类似的东西。我必须使用Template Haskell吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是将代理作为参数传递而不是反过来(大多数时候我只是这样做,而代理只是数据库连接的句柄) 你也可以定义这样的东西:

newtype Proxy = Proxy {withProxy :: (forall a . Proxiable a -> IO a)}

但我认为这不会简化任何事情。