1. 程式人生 > >category theory 簡介

category theory 簡介

本文感發於Bartosz Milewski的網路新書“Category Theory for Programmers" (免費)

category theory是一門抽象的數學理論。Bartosz試圖把它在程式設計方面的應用,解釋給程式設計師。強烈推薦閱讀原作。

還沒看過的,或者在猶豫是否要花時間看看,且聽我說說先。

引言

給你一袋麵粉,讓你烤個麵包。

你把麵粉,酵母,其他配料按比例配好。然後發麵,放烤箱。

烤到一半,家裡來人了,麵包太小,不夠吃,要整個大的。怎麼辦?

烤過麵包的都知道,你不能再整一塊麵,和原來的麵糰摻和在一起,一塊烤。你只能重新再烤一個大的。

編過程的都知道,你程式快編完了,有人提出要加功能(小麵包變大面包問題)。或者有人給你塊老面,讓你加塊新面,烤成大面包(摻和麵團問題)。這些都是很棘手的問題。

category theory教你如何把各種麵糰摻和在一起,把麵包做大。

1. 讓面發著

我們如果把烤麵包的類比再扯的遠一點。問題的關鍵是:一旦烘烤的化學過程發生了,就不可逆了,麵糰很難再撮合到一起了。

要讓麵糰隨意組合,揉捏,保持可塑性,必須使其停留在可逆反應階段。簡單說,讓面發著

category theory只研究兩樣東西:麵糰(object)和揉麵(morphism).

category theory有個簡單規則:
如果麵糰形狀A,可以先揉成形狀B,然後揉成形狀C,那麼麵糰一定可以從形狀A直接揉成形狀C