函数式编程中的Functor、Bifunctor和Applicative Functor
1. 基础运算与类型定义
1.1 基础运算示例
以下是一些基础运算示例:
- Nothing $> 1 ➔ Nothing
- Vec3 50 17 29 $> 1 ➔ Vec3 1 1 1 ,当我们不需要之前计算得到的 Vec3 结果,但在计算成功时后续需要一个单位向量时,这个运算会很有用。若计算失败,则会得到 Nothing 。
- unzip 是列表 unzip 操作的泛化,例如:
- unzip (Just ("Hello", "World")) ➔ (Just "Hello", Just "World")
- unzip (Just (Vec3 1 1 1, Vec3 1.0 1.0 1.0)) ➔ (Just (Vec3 1 1 1), Just (Vec3 1.0 1.0 1.0))
1.2 玩家数据类型定义
我们可以设计一个类型来存储任何游戏的信息,每个玩家在任何时刻都有一些牌和额外的状态(如金钱数量、当前得分、历史记录等)。定义如下:
data PlayerData a = PlayerData Deck a
这里的
超级会员免费看
订阅专栏 解锁全文
977

被折叠的 条评论
为什么被折叠?



