簡體   English   中英

功能語言中的分解(模塊化)

[英]Decomposition (modularity) in functional languages

有個主意:函數(在FP中)可以像OOP中的組件一樣組成。 對於OOP中的組件,我們使用接口。 對於函數,我們可以使用委托。 目標是實現分解,模塊化和可互換性。 我們可以使用依賴注入來簡化它。

我試着找一些關於這個話題的東西。 沒運氣。 可能是因為沒有足夠大的功能程序需要這個? 在搜索用FP編寫的企業級應用程序時,我找到了這個列表。 現實世界中的功能編程本文 我希望我錯過了FP的殺手級應用程序,這個應用程序足夠大,值得分解。

問題:您能否展示出體現真實的FP應用程序(最好是開源),它將分解用於模塊?

Bonus chatter:使用的常用模式是什么? 什么樣的功能通常會分解成單獨的模塊? 這些實現是否曾被用於測試目的?

前段時間我正在學習F#並想知道相同的主題,所以我詢問了要學習的高質量開源項目

你沒有在函數式​​編程中看到類似於依賴注入的原因是它只是“自然的”,因為你只是通過傳遞或編寫函數來“注入依賴”。 或者正如本文所說,“ 功能依賴注入== currying ”,但這只是一種機制。

模擬框架不是必需的。 如果你需要模擬一些東西,你只需傳遞一個“存根”函數。

另請參閱有關實際Scala應用程序的此問題

要么我們正在談論交叉目的(這是可能的:我對OOP術語不太熟悉),或者你對功能編程缺失了很多。 模塊和抽象(即可互換性)基本上是在功能語言CLU中發明的。 關於抽象類型的開創性論文是James Morris 在編程語言中保護,類型不是集合 后來,模塊系統和抽象的大多數改進來自函數式編程世界,通過類似ML的語言。

函數式編程的殺手級應用通常被認為是符號操作。 大多數函數式語言編譯器都是用語言編寫的,因此您可以查找自己喜歡的函數式語言實現的來源。 但是,幾乎任何重要的程序(功能與否)都是在某種程度上以模塊化方式編寫的 - 也許我錯過了“分解”的含義? 模塊化將更加明顯,並使用高級模式系統(如Standard MLObjective Caml)在強類型語言中使用更高級的概念。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM