functor

    16

    1答えて

    ハスケルのファンクタを勉強するとき、私はFunctor.Indexedファンクタのタイプを思いついた。このファンクタは、imapという操作を定義します。私はその定義とimap署名を理解していませんでした:imap :: (a -> b) -> f j k a -> f j k b。私は正式な定義を見つけようとしましたが、これだけが見つかりました:http://ncatlab.org/nlab/sh

    8

    3答えて

    私は関数型プログラミング(JavaScriptから来て)には新しく、2つの違いを伝えるのは苦労しています。これは、ファンクターとモナドの理解にも困惑しています。 ファンクタ: class Functor f where fmap :: (a -> b) -> f a -> f b モナド(簡体字): class Monad m where (>>=) :: m a -> (

    10

    4答えて

    なぜステートレスファンクタのoperator()はstaticにできませんか?ステートレスラムダオブジェクトは、operator()と同じシグネチャを持つフリー関数へのポインタに変換可能です。 Stephan T. Lavavej on p。 6は、関数ポインタへの変換がちょうどoperator FunctionPointer()(引用)であることを指摘しています。しかし、非メンバ関数に関してはo

    21

    4答えて

    Exercise 5 of the Haskell Typeclassopedia Section 3.2 2つのファンクタの組成物はまた、関数子である 文で証明または反例を要求します。種類は私の知る限りとして一致しないため、私はこれがFunctor 2つの別々のインスタンスで定義されたfmap方法を構成話していたことを最初に思ったが、それは本当に意味がない 伝えることができます。 fとf'の2種

    17

    2答えて

    私はHaskellのFunctorインスタンスがファンクタの法則によって(一意に)決定されているのか疑問に思っていました。 は、少なくとも「常用」データ型の場合にFunctorのインスタンスを導出することができるため、少なくとも多種多様なケースで一意である必要があります。便宜上 、Functor定義とファンクタの法律は以下のとおりです。 class Functor f where fma

    11

    3答えて

    モナドはFunctor typeclassからfmapを得る。コモノドがCofunctorクラスで定義されたcofmapメソッドを必要としないのはなぜですか?次のように class Functor f where fmap :: (a -> b) -> (f a -> f b) Cofunctorを定義することができます: class Cofunctor f where c

    5

    2答えて

    後、私は固定小数点を行った後、ファンクタのインスタンスを導出する方法がわからないです: data FreeF f a next = PureF a | FreeF (f next) deriving (Functor) data Mu f = In { out :: f (Mu f) } newtype Free f a = Free( Mu (FreeF f a) ) instanc

    5

    1答えて

    私は簡単にそれを再作成することができ、単位数子/モナド data Unit a = Unit を探していますが、私はむしろ、この基本的な何かを複製していないと思います。それは、カテゴリーエクストラパッケージ(http://hackage.haskell.org/packages/archive/category-extras/0.1/doc/html/Control-Functor.html)

    8

    1答えて

    私はtreeの定義をfunctorとfoldableのインスタンスにするよう求めているhw問題のコードを少し書いています。私は以下のコードを記述する場合: import Data.Foldable import Data.Monoid data Tree a = Leaf a | Node [Tree a] deriving (Show) instance Fu

    6

    1答えて

    適用ファンクタfが与えられたので、私は新しい適用ファンクタRev fをfのように変更しましたが、効果の順序は逆になりました。ここでは、次のとおりです。 import Control.Applicative newtype Rev f a = Rev {unRev :: f a} instance Functor f => Functor (Rev f) where fmap f