【发布时间】:2019-08-06 09:52:22
【问题描述】:
我有以下数据类型:
newtype Rep f a = Rep { runRep :: String -> f (String, a) }
上述类型Rep f a 是一个有状态计算,它将String 作为初始状态,并产生一个(String, a) 作为计算结果。 f 是一个函子,计算的结果包含在函子中。
用于以下功能。
rep :: Functor f => Rep f a -> String -> f a
rep a s = fmap snd (runRep a s)
此函数可用于对字符串运行“Rep”计算。但是,我不确定为什么 runRep 必须将 Rep f a 和 String 作为输入。
对于fmap snd (runRep a s) 行,我不确定元组的第二个元素是否会被包裹在函子中或没有它。
感谢任何见解。
【问题讨论】:
标签: haskell functional-programming