我有下一個資料型別:
newtype Fun i a = F (i -> a)
我必須用下一個簽名來實作功能:
joinFun :: Fun i (Fun i a) -> Fun i a
我試過
joinFun (F f) = f
但它有型別i -> Fun i a
我怎樣才能用正確的型別實作這個功能?
uj5u.com熱心網友回復:
f具有 as 型別i -> Fun i a,并且您應該回傳 a Fun i a,因此是一個i將 an映射到 an的函式a。
唯一有意義的事情是構造一個函式,該函式接受一個型別為 的引數,該函式i將用于 on f,然后將回傳 a Fun i a,我們將通過使用該引數再次應用它來評估該函式i。
因此,我們可以實作joinFun:
joinFun :: Fun i (Fun i a) -> Fun i a
joinFun (F f) = F go
where go i = case f i of
(F g) -> …
我將實作該…部分作為練習。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355724.html
下一篇:判斷一個數能否在一定范圍內整除
