- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类型的函数
(forall m. (MonadCo r m, MonadReader Int m) => m ())
-> (forall m. (MonadCo r m, MonadReader Int m) => m ())
(MonadCo
是我自己的代表协程单子(monad)的类型类。如果您愿意,您可以考虑使用MonadError e m
来代替。问题将是相同的。)
看来我应该能够具体化约束并最终得到一个具有类型签名的函数
(Equals k (MonadCo r, MonadReader Int))
=> (Constrain k ()) -> (Constrain k ())
但我不知道如何在实践中实现这一点。我完全困惑于什么:-
和:=>
实际上是。我想我还需要一个 Forall1
在那里的某个地方,因为我普遍量化 m
,但我不知道它应该放在哪里。
我真正想做的是具体化 forall m. (MonadCo r m, MonadReader Int m)
约束。我认为当我这样做时,无论最终出现在左侧,都将自动成为“正确的事情”。
Data.Constraint
看起来很强大,但我不知道从哪里开始。
最佳答案
这应该是一个好的开始:
type ReaderAndCo r m = (MonadCo r m, MonadReader Int m)
g :: (forall m . Dict (ReaderAndCo r m) -> m ())
-> (forall m . Dict (ReaderAndCo r m) -> m ())
g x Dict = f (x Dict)
您可以将 ReaderAndCo
的字典进一步拆分为两个组件,如果您愿望。
为了使其与您问题中的代码更加相似,您可以引入一个额外的同义词:
type Constrain k a = forall m . Dict (k m) -> m a
g :: Constrain (ReaderAndCo r) () -> Constrain (ReaderAndCo r) ()
g x Dict = f (x Dict)
这是你想要实现的目标吗?
关于haskell - 如何使用 Data.Constraint 来具体化约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262407/
可能很明显,但给出这段代码(来自 http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/reify ): (defn
我有一个空页面,我在其中动态添加元素,我正在尝试使用 Materialize,但我遇到了图形问题... 我已按照“http://materializecss.com/”上的不同教程使用正确的方法添加元
我正在尝试定义关系 callto_status(Goal, Status)总是成功,根据调用Goal的结果统一Status (换句话说,我想实现 call_with_inference_limit/3
我在为我的网站设置包含自动完成 (https://materializecss.com/navbar.html) 的物化搜索栏 (https://materializecss.com/autocomp
我有一个即将到来的逻辑考试,并且一直在学习我类(class)中的一些过去的论文。我遇到了一个关于物化的问题,并将其发布在下面; 用具体化来表示变量 B 的性质 取值为 1 或 8。 在阅读了一些资源并
我有一个 Laravel 项目,其中一个页面有 5 个模态(MaterializeCSS),每个模态都有一个表单。当我提交表单并遇到任何验证错误时,模式必须重新打开。 我可以通过运行以下代码来实现这一
我是一名优秀的程序员,十分优秀!