- 博客(4)
- 收藏
- 关注
原创 对linear-type的体会
对linear-type介绍的文章看得很少,也没兴趣和时间去研究,这里只对看到的片言只语谈点肤浅体会和想法。 内存堆分配的指针/引用所带来的内存安全问题主要有三:空指针(未分配)、野指针(未初始化)、空悬指针(被其它指针提前释放)。对于并发多任务来说还有第四个问题:竞争导致值不确定。 无论是linear-type还是Rust语言的生命期,都是为了解决指针/引用所引发的问题,对于栈上连续分配的、随作用域同步分配和释放的变量,那些技术是没有意义的。 FP的纯函数 由于一次性定值,不允许再赋值和状态变化,也不存在
2021-02-11 23:19:17
357
原创 F# 用类型扩展实现传统的类和对象
时过已久,忘了是从何处摘录下的一段F#代码,它是演示F#如何用面向对象范式 写类class、继承inherit、实现接口interface。 type TimelessPerson = class val m_name : string // private field new (name) = { m_name = name } // public constructor member x.SayHello() = Console.WriteLine(x.m_name ^ @" say
2020-08-31 05:40:48
148
原创 通过一个程序来理解 Go 和 F# 两种语言的多态实现方法
本程序计算一个组织机构的净收益。假设这个虚构的组织所获得的收入来源于两个项目:fixed billing 和 time and material。该组织的净收益等于这两个项目的收入总和。 然后我分别用GO和F#两种语言来比较各自的特点及它们有趣的共性。 GO的代码摘自《GO语言中文网》的GO系列教程。 GO: type Income interface { calculate() int source() string } type FixedBilling struct { projectNa
2020-08-29 15:56:50
212
原创 F#语言的类型扩展实现面向对象编程 及与GO语言的比较
F#语言作为.NET家族的重要成员, 在基本保持ML系语言OCAML风格和模式的前提下, 又加入诸如C#在面向对象方面的许多内容, 使之成为既有函数式(为主)又有OOP的多模式编程语言。其OOP模式高度秉承了C#关于类和对象的语言特征与风格。 F#做OOP的标准套路: module asClass = type ICounter = interface abstract GetState: unit -> int abstract Increment: int -> unit
2020-08-29 06:44:57
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人