replicate 3 "hi"
产生
["hi", "hi", "hi"]
但是
liftM (replicate 3) "hi"
产生
["hhh", "iii"]
liftM
是如何(精确地)运行的?
最佳答案
liftM
函数是 fmap
* 的另一个名称,在操作时相当于 map
列表。
liftM (replicate 3) "hi"
= [replicate 3 x | x <- "hi"]
= [replicate 3 'h', replicate 3 'i']
= ["hhh", "iii"]
脚注
* liftM
和 fmap
之间的区别是不同的类上下文,因为由于历史原因,Monad
> 并不暗示仿函数
。
关于haskell - liftM 与原始复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13186328/