功能編程簡介
從頭開始的功能編程
從划痕,易於理解和實用的功能編程從廣泛的角度來說明! 〜從類別理論到FRP的構建
單元1?概述
https://zenn.dev/ken_okabe/books/functional-programmming-from-scratch-1/
這是本文的開始。
引入功能編程的“外部”
什麼是功能編程?
廣泛的主題包括最新編程社區的趨勢,CPU和命令性編程,系統語言的類型,對結構化編程的抽象,功能性語言的介紹,術語和數學之間的關係和功能性編程的術語和數學之間的關係,以及不真實的引擎(遊戲引擎)功能性語言,實體,Sucdse verse versey verse versey verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse verse和frp。
快速開始和設置打字稿和F#開發環境
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-1
引入形成功能編程骨架的零件
頭等艙功能,lambda表達式,高階功能,二項式操作連接,函數合成,單體
沒有這個,功能編程將無法啟動,因此理解是必要的
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-2
深入研究功能編程的基本理論
我們將嘗試提供易於解決的解釋,理由是針對對類別理論特別感興趣的讀者的知名論文,認為這很困難。
不感興趣的讀者不必強迫自己理解一切,也不介意跳過它。
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-3
包括理論內容和圖表的摘要
引入管道/列表/option/io/timeline/async monad
實施MONAD,使用F#和Typescript編寫特定代碼
最終,我們旨在從頭開始建立一個極簡的FRP。
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-4
示例代碼
https://zenn.dev/ken_okabe/books/functional-programming-from-scratch-5
對於許多程序員
而且
因為它是領域中的知識
而且很少能詳細解釋這種“意識”。
什麼是功能編程?
結合純效果
純粹的功能不得具有副作用
“變量”是不變的
有參考透明度(請確保)
通常,這是列出新術語以及功能和規格的方式。
所有這些都是相當嚴格的規則,它們絕對是程序員以前從未意識到的要求,他們剝奪了編碼的自由,使他們覺得自己綁在程序員的手和腳上。
每個術語的真實本質是“真的是什麼?”實際上,直到最後才能正確解釋讀者。
為什麼這必須是這個概念?為什麼我們不應該受到如此限制? ?自從“真的是什麼?”是否經常處理,通常會與新代碼一起推動,以及“您可以編寫如此漂亮的代碼”或“您有任何好處?”
實際上,這些新穎的術語和概念具有簡單而紮實的相似性,您應該了解一些概念,您必須首先徹底解釋它們。
這是一個“意識”的好過程,實際上,“意識”是一種智力探索和冒險,這是非常有趣的事情。
但是,由於評論的主要目標是涵蓋這些列出的功能,並通過令人信服的解釋將每個功能聯繫起來,因此這是一種適得其反的態度,因此可以簡單地涉及或完全忽略這種最重要的“識別”作為獎勵。
解釋這個故事的人可能“真的不明白”(我認為這實際上是很多情況),或者對於那些知道但已經掌握了它的人來說,這是一個善良的解釋,所以很容易說“我說,對嗎?”
當然,我不知道所有的解釋,但是我認為大多數解釋都是由於這個原因而失敗的。
對於某些人來說,世界是知道的|未知〜 “我知道的”和“我不知道的”
當然,世界上有很多“您不知道的事物”,而且不可能僅使用此圖的比例,因此“您知道的事物”的大小被誇大了以說明。
逐漸擴大已知“知識事物”領域的行為是對知識的獲取,好像逐漸取代了未知的領域“知道事物”
例如,如果我們將自己限制在編程和IT領域,
我想學習編程語言生鏽!
我希望能夠掌握虛幻引擎5 !
我想進一步了解Docker的實用技術!
那樣
Rust,虛幻引擎5,Docker和其他人是著名的“著名”技術,在節目和IT世界中著名。
這裡著名的“著名”並不意味著每個人都是眾所周知的,知名的或對這項技術的熟悉,而是他們的名字是眾所周知的,知名的或眾所周知的。
換句話說,無論您是否知道該技術的內容,都有未知的領域,甚至不是一般知名,未知,未知領域,甚至都不是知名的領域。
功能編程的“部分”不是公眾已經知道的技術,例如Rust和Docker。
學習功能編程
不知所措(未實現)
已知
過程=意識比任何事物都重要
但是,許多在街道上豐富的功能編程解釋試圖解釋功能編程所需的新概念,這些概念可能是讀者不知道的,甚至不知道,但已經眾所周知。
這種方法不起作用
結果,
“功能編程知道它是純粹的功能。”
“純函數是參考透明的”
“純粹的功能不會引起副作用。”
這是一個令人難以置信的狀態,一個完全無法理解的解釋處於正常模式,其中一個不熟悉的概念試圖用另一個陌生的概念來解釋未知的事物,或者涉及在沒有基礎的情況下在空中組裝某些東西。
或者,如果您本能地意識到這是不好的,則可以啟動一個相當不尋常的示例,並編寫示例代碼來試圖說服讀者。
通常,這兩個選擇是底線,並且沒有提及基本概念“意識”的真實本質,並且從未以使讀者的意識對重要讀者的意識進行解釋。
用您不知道的單詞解釋另一個未知的單詞←不進行討論
顯示一個奇異案例的示例代碼,重建讀者的腦海中未知概念←很少有任何天才可以做到這一點
還有一種“兩者之間的匹配技術”。
這是一種模式,您為功能語言編寫代碼,並將其稱為“功能編程介紹或“部門理論”。
解釋了一個新的功能編程概念,該編程具有Haskell的未知語言規格。
我們顯示了未知語言Haskell的示例代碼,該代碼重建了讀者思想中功能編程和類別理論的未知概念。
當然,這種“匹配這兩個”當然很尷尬,但是在編程世界中,當前情況實際上是一種嚴峻的情況,在這裡,人們理解它的人,至少可以自己寫Haskell的代碼,正在再現與必須理解的相同方法。
未知:“未知”知識,
知道:“我知道”
未知的“我不知道的事情”
都有
為了澄清這一點,這只是概念分類圖的問題,但也可以重寫圖表。
首先,通常注意到下半部分,已知的已知區域已知
同樣,如果您要學習的目標已經是一種知名的技術,生鏽,虛幻引擎或Docker,則此方法有效。
但是,這種方法在功能編程中不起作用
首先,重申已知知道的是“意識到您所知道的”非常重要。
例如,每個人都應該“非常熟悉“加法”,“減法”,“乘法”和“分裂”,他們在小學數學開始時學到了這些東西。
這本書實際上是從這個級別開始的,並且比上述政策以更計劃的方式設計。
最終,學習意味著根據您已經知道的事物來擴展知識。
當您查看功能編程時,您已經知道的實際上是這樣的。
不知所措知道:“我不知道我知道的”
知道:“我知道我知道的”
這是一個“通知”的過程,並且不需要新任務才能到目前為止從未知數中購買新事物,從而使其變得非常輕鬆且流暢。
換句話說,每個小學畢業的每個人都“非常了解”,“加法”,“減法”,“乘法”和“分裂”,這是該人的紮實知識,並且無需重做算術演習。
這是該人已經在小學上努力獲得的偉大知識資產。
但是,這種稱為“第四算法”的“代數結構”如何導致功能性編程和稱為Monads的概念?大多數人不知道,他們不知道
一旦您擁有“意識”,就可以完全按原樣將其來之不易的知識產權用於功能編程的知識。
因此,通知,告知,教導或解釋這種“意識”是令人髮指的。它要么是解釋者的疏忽,要么僅僅是解釋本身,但實際上,後一種情況非常普遍。
這本書是對這項任務的全面嘗試。
如果您“沒有意識到”,那麼值得自己閱讀這本書。
下一步將集中於未知的“我不知道自己知道的”,並進入未知未知的領域“我不知道我不知道的東西”。
這包括[時間流]的理論物理學觀點
一本著名的書從理論物理學角度介紹功能編程中的“時間處理”是“計算機程序的結構和解釋”,通常用作原始標題中SICP的縮寫。
計算機程序精裝的結構和解釋 - 2000/2/1 Gerald Jay Sussman(作者),Julie Sussman(作者),Harold Ableson(作者)(作者),&4
是
至於功能編程中“時間處理”的理論物理學觀點,至少我不記得SICP除了單一的評論,所以我認為這是一個重要的主題,被公眾忽略了。
這本書是對這項任務的全面嘗試。
如果您“沒有意識到”,那麼值得自己閱讀這本書。
在撰寫本書時,我開發並使用了自己的Wysiwyg編輯器(VSCODE的擴展程序)來有效地粘貼大量圖像並寫下Markdown。
markdownnote