随笔分类 - functional programming
摘要:前一篇介绍了C#函数式的基础 - delegate, Func, Action等。 这里在前一篇的基础上再做些扩展。 项目中经常能看到如下的代码: if(prod.stock) { prod.quantity++; } if(prod.quantity > 10) { //do something
阅读全文
摘要:继前一篇介绍了TypeScript函数式编程示例,这次再写一个C#的代码示例。 作为OOP语言,C#对FP的支持并没有TS那么好,不过也可以通过delegate,Func,Action,甚至是扩展方法(对delegate、Func等进行扩展)实现。 下面是代码示例,该示例假设有Product对象,其
阅读全文
摘要:前提:为了培养团队的技术能力,拿了个小修改需求作为函数式编程的实践机会。 需求:业务部门提出积分活动,当用户达成任务时送积分。简化逻辑,我们暂且认为逢5送5分,逢10送10分,其他送1分。 即达成任务1-4次时,每次送1分。第5次送5分,第10次送10分。 实现过程: mkdir [项目路劲] np
阅读全文
摘要:问:如何在pipe中实现if/else判断null? 答:Option.fromNullable import { pipe } from "fp-ts/function"; import * as O from "fp-ts/Option"; let obj = { state: { value:
阅读全文
摘要:前三篇的快速链接 pipe与flow option, map, flatten 与 chain either, left & right TaskEither就是Either方法的异步版本,需要异步实现的场景会用到TaskEither,如异步http请求。 代码示例如下: import axios
阅读全文
摘要:前两篇的快速链接 pipe与flow option, map, flatten 与 chain Either (fp-ts/lib/Either) 用来表示一个同步操作,该操作可能成功也可能失败。TaskEither是Either的异步版本,后面的随笔再作介绍。 Right、Left是Either的
阅读全文
摘要:继第一篇之后,本文将介绍fp-ts中的option,map,flatten与chain。 option 作为一个容器,其所包含的内容可以为空(undefined),配合pipe使用可以提供安全的数据操作。如果遇到数据为空,则pipe后续方法不执行。代码示例如下: import { pipe } fr
阅读全文
摘要:fp-ts是typescript下的函数式编程框架,抱着了解函数式编程的目的,记录下fp-ts的学习过程。此文为第一部分:pipe与flow mkdir [项目名称] cd [项目名称] npm init --y npm install typescript fp-ts ts-node --save
阅读全文