鉴于:
data MyType a = Done a | Out a (MyType a) | In (a -> MyType a)
Run Code Online (Sandbox Code Playgroud)
我正在努力实施fmap f (In x)。我最初的想法是,In $ \y -> fmap f (x y)但是由于x在a上运行而无法正常工作MyType a-好像我需要某种方式来对参数以及“内部”内容进行fmap映射(如果有道理的话)。我想我正在寻找的是一种b -> m b 从a -> m a给定的创建方式a -> b-可能吗?
我怀疑您实际想要的类型是这种类型(或者您选择了特定类型的某种专业化i):
data MyType i o = Done o | Out o (MyType i o) | In (i -> MyType i o)
Run Code Online (Sandbox Code Playgroud)
此处的主要区别在于,In构造函数为其函数所包含的参数和结果使用单独的类型。Functor像这样将输入和输出参数分开后,您应该发现实例更容易编写。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |