11
昨天晚上,我正在寫一些娛樂代碼,在某些時候我用>>=
代替concatMap
,並在我的代碼中看到了〜10%的加速。爲什麼>> =他們應該是同一件事時比concatMap快?
我的印象是>>=
對於[]
的定義恰好是concatMap
,所以我有點困惑。
昨天晚上,我正在寫一些娛樂代碼,在某些時候我用>>=
代替concatMap
,並在我的代碼中看到了〜10%的加速。爲什麼>> =他們應該是同一件事時比concatMap快?
我的印象是>>=
對於[]
的定義恰好是concatMap
,所以我有點困惑。
有趣。我不禁想到一個'Foldable'也是'Alternative'相當於一個'Monad' .... – AJFarmar
@AJFarmar你爲什麼這麼想?我不知道這有什麼意義 – Emil
@ user3217013'bind'fa f = foldr(<|>)empty $ foldr(:) [](fmap f fa)'where'bind'::(Foldable f,Applicative f) => fa - >(a - > fb) - > fb'。 QED。 – AJFarmar