假設兩個新類型都是這樣 type MyProductType a = (FType1 a, FType2 a)
type MyCoproductType a = Either (FType1 a) (FType2 a)
定義......這FType1和Ftype2是Functor兩個實例。 如果現在要宣佈MyProductType和MyCoproductType爲Functor情況下,將編
我實現基本Functor // class Functor f where
public protocol Functor {
typealias A
typealias B
typealias FB
// fmap :: (a -> b) -> f a -> f b
func fmap(f: A -> B) -> FB
}
public
如上所述,this question/answers,Functor實例是唯一確定的,如果它們存在的話。 有關列表,有兩個衆所周知的應用實例:[]和ZipList。所以適用性不是唯一的(也見Can GHC derive Functor and Applicative instances for a monad transformer?和Why is there no -XDeriveApplica
ocaml的結合簽名 假設我有兩個簽名,有序,和現場 module type ORDERED = sig
type t
type comparison = LT | EQ | GT
val cmp : t -> t -> comparison
end
module type FIELD = sig
type t
val (+) : t ->
data Tree t = Empty | Node t (Tree t) (Tree t)
我們可以創建函子實例,並使用 fmap :: (t -> a) -> Tree t -> Tree a
但是,如果不是(T - > A)我想(樹T - > A)這樣我就可以有機會獲得一個整體(節點T )不算了筆 treeMap :: (Tree t -> a) -> Tree t -> Tree
請執行以下功能: composeApplicative :: (Applicative f) => f (b -> c) -> f (a -> b) -> f (a -> c)
這樣的: (composeApplicative f g) <*> x == f <*> (g <*> x)
或者,解釋爲什麼這不能做?