Hask 範疇本身是乙個么半群嗎

時間 2021-06-03 14:05:49

1樓:

我想說的是,題主別光在那想呀,套定義自己看看不就知道了,又不難(逃

首先,「範疇么半群」這種描述怎麼聽怎麼怪,直接拿這句話出來那顯然是不對的。

不過我們可以拿範疇的組成元素出來,看看它能否組成么半群。Hask 範疇不嚴格地可以描述為:

物件是 Haskell 型別。

態射是函式。

單位態射 id。

合成是 (.)。

好的,現在我們要拿這些東西組成么半群了!

首先這個群裡是什麼東西?好,就是 Haskell 的型別們。

運算是?Well,為了讓任意兩種型別 a 和 b 組合起來,我們有很多種選取方法……比如 (->) a b,比如 (,) a b。不妨這裡選擇 (,) a b。

單位元?看起來可以選擇 Void,這樣 (Void,a) 和 (a,Void) 和 a 是同構的。

但是要注意了,這裡的單位元是在同構意義下視 (Void,a), (a,Void), a 為相等。如果沒有這個要求,很遺憾在 (,) 運算下找不到單位元。此外,還得排除掉 Haskell 自己 type lifting 的影響。

但是如果你說「我不要你覺得、我要我覺得」,那這裡的確是個么半群。

如果你熟悉 ADT 的話,應該一眼就能看出來這無非是自然數和加法運算構成的么半群而已。

如果運算選為 (->) 的話情況又不一樣了,因為 a-> 和 ->a 完全不是一碼事。哪怕在同構意義下,你也找不出乙個單位元。下面用 ADT 的手段證明:

在 的半群上不存在單位元。

假設存在單位元 ,滿足對於任意 有 ,那麼顯然首先可以排除掉 的情況,接著可以在等式兩邊關於 求導 次,得 ,這與 的任意性矛盾。

所以,題主在題目裡提到的 (.) 是萬萬不可用來做么半群運算的。首先它不能組合兩個任意型別,其次如果你用 (->) 的話那就沒單位元了 23333

還有另外一種想法,就是只考慮函式(題主或許想問的是這個?)。那麼這裡有若干個重大問題,第一,多態函式怎麼辦?

這個問題比較重要,因為它關係著你怎麼處理 id……第二,(.) 並不能組合任意函式,所以涼了。

總而言之,這句話單獨拿出來是錯的,因為範疇不是么半群。但是拿裡面的元素有望在特殊條件下組成乙個么半群。

孩子成為乙個壞人是本身原因還是父母原因?

劉真蘭 孩子真的沒有壞人,一定是家庭教養方式出了問題,當然,這並不是說家長是壞人。而是,家長不理解孩子,對孩子的不當行為不會引導。阿德勒說,孩子的不當行為都是有目的的。有些是求關注,有些是權力之爭,有些是報復,有些是自暴自棄。你說的這個孩子的行為具體是什麼目的,需要結合你看到他的不當行為的感受以及他...

霍尊的瀘上情慾群是男人的乙個縮影寫實嗎?

The whispered 是資產階級的生活現實 不是鍋男和勞動者的生活現實 鍋男都在幹流水線,打灰,站崗,值班 資本家和富人才天天騙炮 鍋女不服請和鍋男一起把他們掛路燈 反斗戰士 實際上,乙個人在賺錢 成功的過程中付出的越多,成功後越可能不擇手段取回來 就好像三萬買了個縣令,當上縣令後至少要撈足三...

一群人不喜歡乙個人是乙個人的錯還是一群人的錯?

隔山燈火 為什麼覺得是錯,只是不一樣而已。喜歡和不喜歡的標準是虛無縹緲的,如果覺得有很多人喜歡是對的,那麼,他們的喜好的標準是對的還是錯的呢?不能用對和錯來標榜喜歡呀,只能說是不同而已。如果是在人際交往上出現問題,想借這個問題來提公升一下自己的交往水平,那就得做好同化的準備,成為所謂的別人喜歡的那些...