簡體   English   中英

如何將應用效果添加到半身像中?

[英]How to add applicative effects to a monoid?

如何更改下面的代碼,以便Maybe在monoid元素中的每個元素也都帶有兩個參數(因此它將成為適用於“雙重”讀者的)?

g :: (Monoid a, IsString a) => [Maybe a] -> Maybe a
g = foldr (<>) (Just "")

因此,結果將是以下類型:

g2 :: (Monoid a, IsString a) => [b -> c -> Maybe a] -> b -> c -> Maybe a

我想我可以兩次提起<>

> :t (liftA2 $ liftA2 (<>))
(liftA2 $ liftA2 (<>))
  :: (Monoid c, Applicative f1, Applicative f) =>
     f (f1 c) -> f (f1 c) -> f (f1 c)

但是我一直試圖用foldr組合起來以獲得我想要的類型簽名。

這就是我會做的

g2 x y = g $ ($ y) <$> ($ x) <$> theList

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM