我試圖推導摩爾自動機變壓器一類的實例,其中:在Haskell,我怎麼得出:例如類別(摩爾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
?
我對Haskell仍然很陌生,所以我很抱歉,如果這是一個愚蠢的問題。
「我試過寫:'實例類(MooreT a)',但我沒有工作」。這是做到這一點的正確方法。請給出您嘗試的實際代碼和您遇到的錯誤消息,我們可以幫助您修復它 –
此處錯誤: *類型同義詞'MooreT'應該有3個參數,但已經給出了1 *在實例聲明對於'Category(MooreT)' – Reddog
@Reddog編譯器告訴你到底是什麼問題(你應該閱讀它給出的錯誤) - 'MooreT'是一個類型的同義詞,這意味着它在使用時必須被完全應用(即,它適用於3個參數),在'實例類別(MooreT a)'中,它顯然只適用於一個。 – user2407038