私はそれがファンクターであるfmapタイプを持っていることを知っています(そしてファンクターが何であるかに応じて異なることをします)。私の基本的な質問は次のとおりです。いくつかの呼び出しが与えられた場合、 ghc はファンクターが何であるかをどのように理解するのですか?(a -> b) -> f a -> f bffmap r xfxr
これをもっと正確にしましょう。と は、ある型に対して=であるが、とは異なるようなファンクターであるfとします。has typeとhas typeの場合、 some of typeと something of typeの2 つの異なる結果が考えられるようです。このあいまいさはどのように解決されますか?f'f af' aaf bf' bra -> bxf afmap r xf bf' b
二次的な質問: 奇妙なファンクターを作成してこれをテストしたかったのですが、おそらく任意の型を取りa、関数に対して愚かなことをするものです...しかし、私ができる正しい構文を見つけていないようですこの方法でファンクタを指定します。(そのようなものはありますか?ファンクターのインスタンスにする前に、型クラス名を作成する必要があるようです。)[Int]adata Newtype a = [Int]
編集:私は今それを手に入れましたが、記録のために、本当の問題(これは私の質問でのみ暗黙的です)は、すでに存在するFooようFoo aなタイプのファンクターを持つことができないことに気付いていなかったことです。Int