私はムーアオートマトンの変圧器のためのCategoryインスタンス、導出しようとしています:は、どのように私は導出を実行します。インスタンスのカテゴリ(ムーアAB - >ムーアのBC)
data Moore a b = Moore b (a -> Moore a b)
type MooreT a b c = (Moore a b -> Moore a c)
問題はあるが、MooreT
が持っています3つのパラメータがありますが、Category
は2つしかありませんでした。私は書き込みを試みました:instance Category (MooreT a)
、しかし私は動作しませんでした。
パラメータa
は、実際にはid
と(.)
の定義は関係ありません。例:
id :: MooreT a b b
id x = x
このようなインスタンスを定義する方法はありますか。または、特定のタイプa
のMooreT
を定義する必要がありますか?例えば、type IntMooreT a b = MooreT Int a b
?
私はまだハスケルに新しいので、これはばかな質問であればごめんなさい。
"私は「インスタンスカテゴリ(MooreT a)」と書いてみましたが、動作しませんでした。それが正しい方法です。あなたが試した実際のコードとあなたが遭遇したエラーメッセージを教えてください。 –
エラー: *タイプ同義語 'MooreT 'は3つの引数が必要ですが、与えられました1 *インスタンス宣言(MooreT a) – Reddog
@Reddogコンパイラは問題が何であるかを正確に教えてくれました。(あなたにはエラーがあります) - MooreTは型シノニムです。それは3つの引数に適用されます)、 'インスタンスカテゴリ(MooreT a)では、1つだけに明確に適用されます。 – user2407038