摘要:
问题 起因 最近正在用F#开发一个应用系统,其中核心的问题是建立一个系统,这个系统有串联和并联的分系统嵌套组成,所以构成的样子就好比说是: graph LR ss#-270763029[A] ss#-952472382[B1] ss#1904380480[B2] ss#-50630250[B3] s 阅读全文
摘要:
有缺失值的数据 假设我们有一个类似于CSV的文件,每行的数据用’,'隔开。文件中有些数据是缺失的,也有些数据没有保存,采用字符串说明。 12,45,23,,23,99,33,24,,"help, Oh, help",34 7,8,3,53,,9,13,22,"help, Oh, help",,24 阅读全文
摘要:
option 在处理数据时,缺失数据和无效数据是一个常见的问题。在Python中,通常使用None来表示缺失数据。 在F#中,我们可以使用FSharpOption来表示缺失数据。FSharpOption是一个泛型类型,它有两个值:Some和None。Some表示一个值,而None表示一个缺失的值。F 阅读全文
摘要:
Computation Expression More F#中自定义的 Computation Expression 一共有8个语法构造,其中match!是let!的语法糖。 在前面的一个帖子里CE初探我们已经介绍了 computation expression 中的绑定和返回,语法是let!和re 阅读全文
摘要:
突然想做点有用的东西 天天学F#,感觉又没有动力了。还是要做点好玩点的、有用的东西才会更加有积极性。因为F#活在.NET平台中,做有用的东西简直太简单了。结合到最近知乎和别的平台一直在叽叽咕咕发视频,我没有怎么做过视频,但是PPT做得不少。我就想为啥不能把PPT直接搞成视频呢? 这不思路一下子打开了 阅读全文
摘要:
简单值的ADT 在领域建模中,我们尝尝会遇到一些简单的值,比如人的名字、人的编号、物品的代码。如果过早进行程序设计,这些值很容易就会变成程序设计语言中的基本量,string、int这些,就比如人的标号和物品的编号,很容易就被记录为int。然而根据DDD的原则,我们应该尽可能用领域专家认可的方式来记录 阅读全文
摘要:
小小的let let,三个字符,一开始就要用,学到computation expression,居然还会发现let别有洞天,值得一探,真是奇妙! 最初刚开始学习F#时,对let的理解是,定义一个变量,或者定义一个函数。但从语法的角度看,结合当时的学习内容,这个理解也是没有问题的。 let x = 1 阅读全文
摘要:
computation expression之一问三不知 计算表达式是一个有点难理解的东西。我把帮助全部看了一遍,记住了个上下文敏感的计算(contex-sensitive computation)。但是让我讲计算表达式是什么?为什么?怎么做?我是满头雾水。我大概知道是什么,就是一个语法特征,在一个 阅读全文
摘要:
前言 采用ADT来对领域进行设计,是一种很好的实践。在这种实践中,我们可以把领域中的数据抽象成ADT,把领域中的操作抽象成函数,然后利用ADT的类型系统来进行类型检查,从而保证领域中的数据和操作的正确性。 设计目标 首先,我们的设计目标如下: 各领域专家架和程序开发都能够理解的设计能够利用ADT的类 阅读全文
摘要:
ADT与表达式 这篇主要是写函数式编程中的元素与ADT的关系,特别的就是关于表达式的讨论。在函数式编程中,表达式也是一个比较重要概念。下图是Scott Wlaschin关于F#核心概念的图。 函数式编程 F# 表达式与值 类型系统 模式匹配 区别于面向过程的程序主要由语句(Statement)构成, 阅读全文