实现记录语法中定义的函数接口?

时间:2017-02-07 10:02:02

标签: function haskell types

此刻我已经覆盖了读者monad,而且我遇到了runReader

newtype Reader e a = Reader {runReader :: (e -> a)}

我知道数据构造函数Reader在这里将两种不同类型(ea)传递到使用记录语法的类型构造函数Reader中包含在runReader ::e上运行的函数a

我正在尝试对此进行测试:

newtype Test a b = Test {runTest :: (a -> b)}

如何创建runTest的实施?

1 个答案:

答案 0 :(得分:2)

如果

t :: Test a b

然后

的类型是什么
runTest t :: ? 

嗯,是的,runTest t :: a -> b。它实际上与ab的函数相同。同样,Reader e a实际上是一个以e作为其第一个参数的函数。

你问过实现,我假设你的意思是如何实现Reader Monad? Reader的monad实现允许您组合多个函数,这些函数都具有e作为其第一个参数,并处理将单个e分发给所有这些第一个输入。提供的e将是您的函数(runReader r) :: e -> a

的输入

我不确定我是否在这里偏离轨道,让我知道,我会把读者monad充​​实一点。