什麼是 Monad?
單子是 么半群,屬於 endofunctors... ?
...讓我們再試一次:
單子是函數式程式設計中使用的一種抽象,用於以一致的方式處理計算。它是一種設計模式,允許操作鏈接,同時以受控方式封裝副作用,例如狀態變更、I/O 或錯誤。
Monad 可以被認為是一種包裝值並將函數應用於它們的方式,確保計算在可預測和受控的環境中進行。
我個人的理解是:monad是一種資料結構,具有
這使得能夠以保留不變性和函數純度的方式連結和組合操作——這是類別的「反向」方法,其中狀態無法就地修改,但可以在功能上應用轉換來產生新實例。
這種「反向對稱」突顯了對比:
類別修改其內部狀態,透過內部方法保持可變性和直接互動。他們大部分時間都與全球國家互動
Monad 達到類似類似的結果,但透過包裝值和映射外部不可變轉換,它們沒有副作用:沒有全局狀態
範例:
Python 範例專案:
https://github.com/blackopsrepl/py-monad-task-manager
在這個應用程式中,我們使用 State Monad 來管理任務清單的狀態。 State Monad 提供了一種將任務管理流程建模為應用程式狀態的一系列轉換的方法,同時保持狀態本身不可變。
我們沒有直接修改任務清單的狀態,而是使用 return_ 函數將初始狀態包裝到一個單子容器中,並使用綁定函數以可預測的方式將轉換應用於狀態。每次執行操作(例如新增、編輯或刪除任務)時,它都會傳回一個新的狀態實例,確保不變性和可組合性。
主要功能:
透過使用 State Monad,我們可以以確保狀態不可變地更新並且組合計算的方式處理任務管理操作,而不會產生副作用或操作之間不需要的交互。
以上是單子是內函子類別中的廬半群...的詳細內容。更多資訊請關注PHP中文網其他相關文章!