合集-F#奇妙游
摘要:有缺失值的数据 假设我们有一个类似于CSV的文件,每行的数据用’,'隔开。文件中有些数据是缺失的,也有些数据没有保存,采用字符串说明。 12,45,23,,23,99,33,24,,"help, Oh, help",34 7,8,3,53,,9,13,22,"help, Oh, help",,24
阅读全文
摘要:突然想做点有用的东西 天天学F#,感觉又没有动力了。还是要做点好玩点的、有用的东西才会更加有积极性。因为F#活在.NET平台中,做有用的东西简直太简单了。结合到最近知乎和别的平台一直在叽叽咕咕发视频,我没有怎么做过视频,但是PPT做得不少。我就想为啥不能把PPT直接搞成视频呢? 这不思路一下子打开了
阅读全文
摘要: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
阅读全文
摘要:简单值的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)构成,
阅读全文
摘要:代数数据类型与领域驱动设计 代数数据类型(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
阅读全文
摘要:分支选择 F#中的match语句是一个强大的工具,它可以用来匹配各种各样的模式。match语句的一般形式如下: match expression with | pattern1 [when condition1]-> result1 | pattern2 [when condition1] -> r
阅读全文
摘要:Mergesort mergesort是一个典型的分而治之、迭代的算法。它将一个数组分成两个子数组,分别排序,然后将有序的子数组归并为一个有序的数组。归并操作是将两个有序数组归并成一个有序数组的过程。 mergesort的时间复杂度为O(nlogn),最佳和最坏情况下的时间复杂度都是O(nlogn)
阅读全文
摘要:F#还能干点啥 距离上一次更新已经过去了很久(40分钟之久!),这段时间我在学习F#,并且在工作(划掉,躺肥并没有工作要做)中使用F#。 那干点啥呢?还是老本行吧,搞点飞行力学。 有一个球(质点),在一维平面大地、真空两个假设条件下,以一定的初始速度和初始角度抛出,求其运动轨迹。什么?这也是飞行力学
阅读全文
摘要:面向对象编程掉书袋 Object-oriented programming (OOP) is a programming paradigm that uses abstraction to create models based on the real world. It uses several
阅读全文
摘要:WPF but F# 上一篇,写了一个F#的WPF,所有的东西都是随手写出来的,没有经过详细考虑和设计。就是吧,一点也不优雅……咋们虽然头发不多,但是优雅永不过时! 实际上能用的开源UI库(F#,WPF)有两个: Avalonia.FuncUI Elmish.WPF 本文旨在学习F#,因此不使用任何
阅读全文
摘要:WPF中的绑定 绑定在UI开发中是一个非常重要的概念,它可以让我们的UI界面和数据模型之间建立起联系,当数据模型发生变化时,UI界面也会随之变化,反之亦然。这样的好处是显而易见的,我们不需要手动去更新UI界面,而是让数据模型自己去更新UI界面,这样的代码更加简洁,更加易于维护。 在传统的UI开发中,
阅读全文
摘要:F# 代码风格 这玩意有两点不能忘记,第一点这是很高级的内容,不要相信那些要求你一开始学习F#就要这样就要那样;第二点,这些内容根据不同的项目和不同的组织时时长变动的,并没有什么一定要遵循的准则。基于这两点认知(这两点是认知吗?是的),这是高级要求,这是项目实施的特定要求,该怎么做呢? 知道有这个事
阅读全文
摘要:核越多,越快乐 多核CPU对于计算机程序的开发带来了很大的挑战,但是也带来了很大的机遇。在多核CPU上,程序的性能可以通过并行化来提升,但是并行化的难度也随之提升。本文将介绍多核CPU的基本概念,以及如何在多核CPU上进行并行化编程。 此外,Web应用、GUI应用中广泛存在的响应式编程也代表了系统规
阅读全文
摘要:Break return但是函数 今天看到一篇讲F#计算表达式的文章F#计算表达式Head First:循环中实现Break return (一),文章把自定义计算表达式结构写得很清楚,文笔清新。 但是这个在循环中实现Break return的概念一下击中了我已经完全函数式编程化(就是最近的事情!)
阅读全文
摘要:这是个什么鬼 好吧,我也是学过C语言的骨灰程序员,看到下面的代码,我也是大受震撼的。还能这么玩? type Shape = | Circle of radius: float | Rectangle of width: float * height: float 这样的话,能玩的就多了。比如比较简单
阅读全文
摘要:F#绘图 如果Python没有Matplotlib,R没有ggplot,Matplab没有plot函数……就像阿珍爱上了阿强,能画图的脚本才是好脚本。当然,F#有画图包,但是F#在数据处理中的地位就像下面,这也是我们没办法的。 ScottPlot是一个基于.NET的绘图包,支持C#和F#,支持Win
阅读全文
摘要:F#的计量单位 从各个意义上,都可以说计量单位很重要。度量衡的统一是社会化大生产和市场交换的基石。这句正确的废话跟F#没有半毛钱的关系,直到我看帮助看到了这个: [<Measure>] type m let l = 1<m> 脑袋顿时秃起来哦不兴奋起来。仔细看了看几个帖子,发现这个东西是F#的一个特
阅读全文
摘要:性能测试 作为一个不事生产和创造但是热爱学习和思考的编程爱好者,最喜欢看和最喜欢做的通常都是比来比去、拉拉扯扯,所以性能测试是必不可少的。 你看那些云玩家、云车神、云计算爱好者,孜孜不倦的都到处看评测报告,动手能力强的都在写评测报告。这就是我的观点:不能让人做决策,也要让人感觉自己在做决策。因为智人
阅读全文
摘要:For循环 在F#中,for循环的语法如下: for <identifier> = <start> to <end> do <body> 但是所有函数式编程语言都不鼓励使用for循环,而是使用递归来实现循环。 for循环的一个常见用法是遍历一个数组,例如: let arr = [|1; 2; 3;
阅读全文
摘要:F#到底有什么用? 奇妙游写到第五篇,前面的几篇都是开场白: 一个用F#编写WinForm的例子donet命令行工具,也就是F#的开发环境关于函数和函数式编程的碎碎念函数式编程的核心概念:值 下面,我们开始正式来搞点事情,看看F#能做些什么。在此之前,我们再复习F#的运行环境。 F# Interac
阅读全文
摘要:let关键词 如果熟悉其他语言,你可能会认为let关键词是用来声明变量的。但在F#中,let关键词是用来声明值的。值是不可变的,而变量是可变的。(注:在F#中,变量是用关键词mutable来声明的。)值的概念,是函数式编程中的一个重要概念。值和变量的区别,是函数式编程和命令式编程的一个重要区别。变量
阅读全文
摘要:函数与编程 程序设计的概念 编程,programming,也叫做程序设计,有很多小的方向,有些方向接近使用机器进行计算的科学研究,有些方向接近使用机器、程序设计语言来解决实际问题。这是驱动编程这门工程+艺术的行当的两个驱动方向。理论与应用,一方面进行分析,探索可能性、边界,一方面进行综合,与领域结合
阅读全文
摘要:TUI vs. GUI TUI和GUI分别是文本用户界面(Text User Interface)和图形(Graphic User Interface),是计算机交互界面的两种流派。 最初的时候,神研制了大型机,其输入输出依靠卡带;后来神说,要用键盘,于是就有了命令行;神看到敲命令的人头都秃了,于是
阅读全文
摘要:F#奇妙游(1):F#浅尝 是什么 F#是.NET平台的OCaml。 这句话很欠打,.NET和OCaml前者知道的人有一些,后者就很少了。.NET平台是一个开源的软件平台,早期由微软主导,目前已经开源,由.NET基金会维护。 OCaml是一种函数式编程语言,它的类型系统非常强大,支持多态、类型推断、
阅读全文
摘要:问题 起因 最近正在用F#开发一个应用系统,其中核心的问题是建立一个系统,这个系统有串联和并联的分系统嵌套组成,所以构成的样子就好比说是: graph LR ss#-270763029[A] ss#-952472382[B1] ss#1904380480[B2] ss#-50630250[B3] s
阅读全文

浙公网安备 33010602011771号