08 2023 档案
摘要:ADT与表达式 这篇主要是写函数式编程中的元素与ADT的关系,特别的就是关于表达式的讨论。在函数式编程中,表达式也是一个比较重要概念。下图是Scott Wlaschin关于F#核心概念的图。 函数式编程 F# 表达式与值 类型系统 模式匹配 区别于面向过程的程序主要由语句(Statement)构成,
阅读全文
摘要:代数数据类型与领域驱动设计 代数数据类型(Algebraic Data Type,ADT)和抽象数据类型(Abstract Data Type,ADT)都与数据类型设计有关,但是两者的设计思想是不同的。抽象数据类型是OOP领域常用的设计思想,注重对实体对象的状态变化的封装和抽象;而代数数据类型则是组
阅读全文
摘要:一个小问题的求解 问题 一根 1m 长的玻璃棒,摔倒地上断成 3 段,最短一段的平均值是多少? 假设玻璃棒一定会摔成三段,且玻璃棒质地均匀,为理想状态。 物理的视角 玻璃棒摔成三段,其物理过程是什么样的? 有一位网友分析了倾斜碰撞的应力分布,提出了断裂位置的可能性分布,并把一次断成三阶分解为同时发生
阅读全文
摘要:Pattern Matching 为什么老是你! 什么是模式匹配 模式匹配是一种编程语言的特性,它可以让我们根据不同的模式来执行不同的代码。模式匹配的本质是一种条件分支,但是它的语法更加简洁,更加清晰。 在F# for fun and profit中,把模式匹配(控制结构)作为F#函数式编程的四个关
阅读全文
摘要:F#中主动模式的三种形式 F#中有一种特殊的模式匹配,叫做主动模式(Active Pattern)。主动模式可以让我们自定义模式匹配的方式,这样可以让我们的代码更加简洁,更加清晰。主动模式有三种形式,分别是: 单选项主动模式多选项主动模式部分应用的主动模式 这三个方式的语法如下: let (|Act
阅读全文