相关疑难解决方法(0)

这是Funator还是Monad?

我在C#中实现了自己的Promise结构,并想在Haskell中测试这个概念,所以经过一些严重的大脑训练(对我来说还是很新的),我制作了

data Promise f a =  PendingPromise f | ResolvedPromise a | BrokenPromise deriving( Show )

class Future p where
        later :: (b -> c) -> p (a -> b) b -> p (a -> c) c
        resolve :: p (a -> b) a -> a -> p (a -> b) b

instance Future Promise where
        later g (PendingPromise f) = PendingPromise (g . f)
        later g (ResolvedPromise a) = ResolvedPromise (g a)
        resolve (PendingPromise f) a = ResolvedPromise (f …
Run Code Online (Sandbox Code Playgroud)

haskell

6
推荐指数
2
解决办法
476
查看次数

在类型构造函数中部分应用类型

在"了解你一个Haskell"一书中,第11章我们介绍了newtype关键字,这一切对我来说都是有意义的,我们看到将Pair类型作为Functor的一个实例.

本讨论以一个问题陈述开始,即"只有一个参数的类型构造函数可以成为Functor的一个实例".我不明白这个说法.这个限制在哪里描述过?

在讨论的上下文中,我们有一个类型对定义为:

newtype Pair b a = Pair { getPair :: (a,b) }
Run Code Online (Sandbox Code Playgroud)

鉴于此,我本以为我们可以使用类似的东西:

instance Functor (Pair a b) where ...
Run Code Online (Sandbox Code Playgroud)

我原以为(Pair ab)会在Functor的定义中替换'f'而没有任何问题.什么阻止这种工作?

接下来,作者继续使用以下方法使Pair成为Functor的实例:

instance Functor (Pair c) where ...
Run Code Online (Sandbox Code Playgroud)

这是我迷路的地方.我不记得曾经在类型构造函数中看到"部分应用"类型.我不确定在这种情况下这甚至意味着什么,更不用说它如何解决上面提到的问题.

我想我在某个地方有一种误解,但我不知道该去哪里寻找它.我确实找到了这个答案,但它似乎只是回答这个问题的一部分.

haskell

4
推荐指数
1
解决办法
213
查看次数

标签 统计

haskell ×2