我需要帮助理解来自Thrist包的这个类型签名。了解复杂类型签名
import Prelude hiding ((.), id)
import Control.Category
import Data.Monoid
import Control.Arrow
import Control.Monad
foldlThirst :: (forall j k . (a +> j) -> (j ~> k) -> (a +> k))
-> (a +> b)
-> Thrist (~>) b c
-> (a +> c)
我对几件事感到困惑。
首先是什么是+>和〜>符号?他们在哪里记录,他们叫什么?
但我的困惑确实停在那里。我意识到量化描述了Thrist类型的线程,但我不确定是否描述了一个关系适用于第一个参数,或者整个函数,或者谁知道......
在其他情况下,我已经看到存在的量化,这句话以一个句点结束,但在这里以 - >结尾,这是否意义重大?
我想我已经明白了。你开始的类型签名的其余部分是:(f a b) - > Thrist g b c - >(f a c)。如果是这样,我想他们可以一样轻松$>等。 – 2010-12-21 06:32:58
@Jonathan Fischoff:是的。使用的符号只是暗示性的,很像传统的'm'用于一个类型变量,可能是Monad的一个实例。 – 2010-12-21 06:35:29