應該怎樣理解haskell中fold函式的fusion property?

時間 2021-05-30 01:22:58

1樓:parker liu

@皓雪 的解答沒有說清楚fold的泛性質(universal property),這裡的fold 就是foldr。具有如下的泛性質:k

=v<===>k=

foldfv

k(x:

xs)=f

x(kxs

)fold函式從List這個遞迴資料型別reduce得到乙個值,而List則是F-alg的不動點,這裡F-alg的函子F a 的定義如下:

dataFa

x=()|

Prodax

我們來看F a 函子的不動點,假設這個不動點是FixF,將FixF 代入到x 中,我們有

data

FixF=()

|Prod

aFixF

在Haskell中,() 和 都是無引數型別,可以看成是Hask範疇中的物件,和Hask 範疇中的終極物件1 是同構的。因此() 和 也是同構的,另外我們把Prod 改為中綴操作符(:)。

於是就有了如下的 F-alg的不動點,也就是haskell的列表型別[a] 的定義:

data[a

]=|a:[a]

根據Lambek 引理,F-Alg 的不動點就是F-Alg 範疇的初始物件,也就是說F-Alg 的任意乙個承載物件x (這是型別變數)都存在唯一的乙個函式(態射)k,從列表型別[a] 得到承載型別x。這個k 也就是fold f v,這就是fold的泛性質(universal property),如下所示(重複一遍上面的泛性質的定義)。k

=v<===>k=

foldfv

k(x:

xs)=f

x(kxs

)我們取F-Alg 的另乙個承載物件y ,其有如下的唯一函式k1 從列表型別[a] 得到承載型別y。k1

=w<===>k1=

foldgw

k1(x:

xs)=g

x(k1xs

)設型別y 到型別x 存在函式h,根據範疇論中態射的組合性質,有如下的等式存在:h.

k1=kh

.foldgw

=foldfv

根據fold的泛性質的定義,有如下的等式推導:

h (k1 ) = k

<=>h w = v

h (k1 (x:xs) = k (x:xs)

<=>h (g x (k1 xs)) = f x (k xs)

<=>h (g x (k1 xs)) = f x (h (k1 xs))

<=>h (g x y) = f x (h y)

於是我們就得到了函式h 的定義,描述了f、g、h之間的關係。也就有了如下的fold的fusion property。hw

=v<===>h.

foldgw

=foldfv

h(gx

y)=f

x(hy

)以上。

請問應該怎樣理解這部佛經?

沉變 於是阿逸菩薩長跪叉手。前白佛言 寧有一事。菩薩摩訶薩於此事中具大乘願。住不退轉。疾成無上正真道不。佛言有。阿逸。北方有世界名曰豐嚴。其國有佛。號德內豐嚴王如來 至真 等正覺 明行成為 善逝 世間解 無上士 道法御 天人師。號曰眾祐。度人無量。其有得聞斯佛名者。歡喜信樂。持諷誦念而為作禮。其人皆...

鋼之煉金術中的門和真理應該怎樣理解

宋人心中如湯煮 如果放到現實世界,大概是諸如牛頓三定律,大一統公式之類的終極真理,能夠從最基本理解這個世界的知識,並且包括一切推論,描述一切現象的所有公式。如果是鋼鍊的世界,大概是能夠煉成一切,也能夠破壞一切的知識,一切物質組織的方式與全宇宙的能量流動,能夠從最本質把握和理解煉金術。相當於掌握了修改...

怎樣理解佛教中的空?

茂陽昜 佛家的空和道家的無極其實是一回事。無極出自道德經中知其白,守其黑,為天下式。為天下式,常德不忒,復歸於無極。黑白就是陰陽,陰陽就是收斂與發散。由收斂自然而然彰顯出發散的模式就是無極。單純的白色,代表黑色遵守其收斂的本性而完全收斂不顯現了。凡事都有兩面性,當一面完全消失了,另一面也就不復存在了...