功能编程简介
从头开始的功能编程
从划痕,易于理解和实用的功能编程从广泛的角度来说明! 〜从类别理论到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