我在haskell玩应用架构和免费的单体游戏。我已经把它放下了,除了如何将我的“指令”提升到我的辅助产品的正确槽中,而不显式地给出完整的左/右路径。
下面是我一直在使用的haskell示例:https://gist.github.com/aaronlevin/87465696ba6c554bc72b#file-reasonable-hs
在这里,为了将类型注入到辅助产品中,我们显式地提到了路径。
例如:
Program :: Coproduct Interaction (Coproduct Auth Logging) a
logC :: (Functor f) => (forall a. Logging a -> f a) -> String -> Free f ()
logger :: String -> Free Program ()
logger = logC (Program . Coproduct . Right . Coproduct . Right)在这里,必须使用Coproduct . Right . Coproduct . Right手动将记录器放在辅助产品的正确槽中。
Runar在scala中使用隐式类型转换和注入类型类型来实现这个结果:https://gist.github.com/runarorama/a8fab38e473fafa0921d#file-gistfile1-scala-L119
总之,我想知道在haskell是否有办法做到这一点。
发布于 2015-10-29 21:49:36
从评论到原来的问题填写答案部分..。
原始的Haskell纸可以在这里找到:数据类型-点菜
在这里可以找到一个Haskell实现:ALaCarte.hs
https://stackoverflow.com/questions/28922566
复制相似问题