学习Haskell:为自定义Multimap类型实现Applicative类型类实例
自定义Multimap类型的Applicative类型类实例编写
自定义数据结构定义
相关的数据结构定义代码如下:
data Multinode k v = Multinode { key :: k , values :: [v] } deriving Show data Multimap k v = Multimap [Multinode k v] deriving Show
对Applicative类型类的基础认知
当前阶段的理解为:
- Applicative是Functor的子类型类,实现该类型类需要定义
pure与<*>两个核心算子 - 两个核心算子对应的标准类型签名分别为:
pure :: a -> f a(<*>) :: f (a -> b) -> f a -> f b
注:实现过程处于Haskell学习阶段,可能存在基础疏漏
初步实现尝试
当前编写的初步实现代码如下:
instance Applicative (Multimap k) where pure x = Multimap [(Multinode x [x])] (Multimap mf@((Multinode kf vsf):nsf)) <*> (Multimap mx@((Multinode kx vsx):nsx)) = Multimap [Multinode kf (vsf <*> vsx)]
内容的提问来源于stack exchange,提问作者Walter
相关产品推荐
相关产品推荐

