函数式编程
文章平均质量分 94
scixing
今天是学习.NET的好日子
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
函数式编程 第八讲 循环者,递归也
本文探讨了函数式编程中循环与递归的等价性及适用场景。通过分析循环和尾递归的结构相似性(初始状态、状态传递、终止条件),指出在业务逻辑中,尾递归可以更清晰地表达"直到成功"的意图。文章比较了命令式循环和函数式递归在动态规划算法和重试(retry)场景下的适用性:循环适合计算密集型任务,而递归更适合表达业务意图。最后提出可将重试逻辑抽象为高阶函数,强调函数式编程通过"将流程转化为值"来提升代码可读性和可组合性,同时指出在C#中使用尾递归需注意性能优化问题。原创 2025-11-27 23:34:53 · 670 阅读 · 0 评论 -
【F#入门】 第六讲 计算表达式(与异步模型简介)
本文介绍了F#中计算表达式的概念,用于简化代数数据类型的组合运算。通过定义OptionBuilder类型实现Bind和Return方法,可以优雅地处理Option类型的值组合问题,避免繁琐的模式匹配。计算表达式支持let!、return等语法,类似于C#的LINQ查询表达式。文章还展示了如何将这一模式应用于异步编程(Async/Task),通过async/task表达式简化异步操作组合。这种方法将高级值视为普通值处理,无需关注具体实现细节,体现了函数式编程的抽象能力。计算表达式大大提升了代码可读性和编写效率原创 2025-10-08 12:06:51 · 679 阅读 · 0 评论 -
【函数式编程】七- 数据结构
本文探讨了函数式编程与数据结构的结合,重点介绍了两种不可变数据结构的实现方式:链表和二叉树。通过递归定义和不可变性原则,文章展示了如何用F#和C#构建函数式链表(List<T>)和二叉树(Tree<T>)。这些结构遵循函数式编程的核心特性:不可变性(修改时创建新对象)和表达式特性(确定性输出)。文章指出函数式数据结构在多读少写场景下的优势,包括状态回溯能力和高级抽象处理能力,同时也提到其性能特点(如尾部操作效率问题)。最后鼓励读者自行实现树的Map和Insert函数以深入理解函数式数原创 2025-09-28 18:04:30 · 881 阅读 · 0 评论 -
【C#探索】C#中三种只读/不可变集合有什么用?
本文介绍了C#中三种只读/不可变集合的区别与应用:Readonly系列是对可变集合的简单封装,成本低适用于限制修改权限;Immutable系列采用函数式编程理念,通过创建新对象实现修改,适合多线程和版本追踪场景;Frozen系列是.NET8新增的真正不可变集合,优化读取性能但创建开销大,适用于只读常量表。文章通过历史演变、性能对比和典型场景分析,帮助开发者根据需求选择合适的集合类型。原创 2025-09-07 00:15:43 · 946 阅读 · 0 评论 -
【函数式编程】(六.plus)LINQ查询表达式 如何让我们的代码变得更加优雅?
本文探讨了C#中LINQ查询表达式与扩展方法式写法的差异与应用场景。查询表达式借鉴SQL语法风格,提供强大的查询能力,但其在代码中可能显得突兀。通过LanguageExt库示例,展示了查询表达式如何优雅处理单子流(嵌套bind),相比传统嵌套写法更简洁。文章对比了应用式与单子流的区别:应用式适合并行计算和错误收集,而单子流支持参数依赖且具备快速失败特性。最后指出二者在函数式编程中各有优势,应根据场景选择合适方法。原创 2025-07-24 10:41:14 · 934 阅读 · 0 评论 -
【函数式编程】六- 多参函数与应用式
本文探讨了函数式编程中处理多参函数的解决方案。首先介绍了柯里化和偏函数应用,将多元函数转化为一元函数序列。然后讲解了正向/反向函数应用的差异及反向应用在代码可读性和可维护性上的优势。重点阐述了应用式(Applicative)的概念,它允许在高级抽象层级中处理多参函数,解决了嵌套Map/Bind带来的复杂性。通过Either示例展示了应用式如何简化抽象层级的组合操作,并指出应用式介于函子(Functor)和单子(Monad)之间的特性。文章为处理多参函数提供了实用的函数式编程技巧。原创 2025-07-05 14:10:02 · 1027 阅读 · 0 评论 -
【F#入门】第五讲 模式匹配
本期内容深入探讨了F#中的模式匹配,这是一种强大的工具,用于分解和判断数据。模式匹配通过定义一系列规则来转换输入数据,F#支持多种模式,包括常量模式、标识符模式、变量模式、OR/AND模式、Cons模式、列表模式、数组模式、记录模式、类型模式和活动模式等。这些模式不仅使业务规则更加清晰,还使得代码更接近问题域的表述,特别是在函数式编程中,模式匹配是递归算法的自然表达方式。通过具体的代码示例,如红黑树的实现,展示了模式匹配如何简化复杂数据结构的操作,使得代码更加简洁和易于理解。模式匹配不仅限于函数式编程,其高原创 2025-05-08 23:00:34 · 565 阅读 · 0 评论 -
【函数式编程】【C#/F#】第五讲 函数式编程中的错误处理,副作用管理
在上一讲中,我们学习了在函数式编程中一个,非常重要的概念。藉由这个武器,我们将来挑战我们最开始做讲述的概念,代码的副作用。当然,如果你还记得的话,程序的异常也是副作用的其中一种。复习时间:会影响外界状态(状态突变)、使用到了IO(输入输出)的功能、改变输入参数,或是抛出异常叫做副作用如果你觉得有部分知识点已经忘了,可以回顾一下之前的内容【C#/F#】「函数式编程」序章 - 不可变与表达式两大戒律单子在FP之中有一个重要的任务,那就是管控副作用的范围。这也是我们一直想要强调的,副作用在程序中不可避免。原创 2025-04-16 15:28:08 · 1133 阅读 · 0 评论 -
【F#入门】第四讲 函数,管道与组合
介绍函数 组合 管道 以及递归函数的概念原创 2025-03-23 20:47:57 · 869 阅读 · 0 评论 -
【函数式编程】【C#/F#】第四讲:单子与函子 - 抽象的编程模式
介绍了函子 单子的定义 以及使用例子,和抽象的编程模式原创 2025-03-17 23:11:41 · 1150 阅读 · 0 评论 -
【F#初学者】第三讲 可区分联合与其高级运用
F#中的可区分联合原创 2025-03-07 11:42:20 · 869 阅读 · 0 评论 -
【C#/F#】【函数式编程】第三讲:我们应该如何使用记录这个类型?- 数据与逻辑分离
介绍了如何利用记录的不可变性和其它特性,完成准确的数据建模。增强代码健壮性可读性原创 2025-02-23 10:29:09 · 885 阅读 · 0 评论 -
【F#初学者】第二讲 F#中的类型简介
F#中的类型系统 集合类型 可区分联合 常见类型 unit类型 面向对象类型等原创 2025-02-07 15:02:57 · 1029 阅读 · 0 评论 -
【C#/F#】「函数式编程」第二讲:函数签名,与“诚实”的函数
介绍了函数签名 与什么叫做诚实的函数原创 2025-02-01 23:13:53 · 878 阅读 · 0 评论 -
【C#/F#】「函数式编程」第一讲:高阶函数、纯函数
介绍 高阶函数 纯函数原创 2025-01-02 16:52:26 · 873 阅读 · 0 评论
分享