Haskell語言學習筆記(60)Biapplicative

來源:互聯網
上載者:User

標籤:control   instance   類型   map   class   flip   學習   應用   ica   

Biapplicative
class Bifunctor p => Biapplicative p where  bipure :: a -> b -> p a b  (<<*>>) :: p (a -> b) (c -> d) -> p a c -> p b d  (*>>) :: p a b -> p c d -> p c d  a *>> b = bimap (const id) (const id) <<$>> a <<*>> b  (<<*) :: p a b -> p c d -> p a b  a <<* b = bimap const const <<$>> a <<*>> b(<<$>>) :: (a -> b) -> a -> b(<<$>>) = id

Biapplicative 是個類型類。主要用於在二中繼資料結構上應用 Applicative。

(,) 是個 Biapplicative
instance Biapplicative (,) where  bipure = (,)  (f, g) <<*>> (a, b) = (f a, g b)
Const 是個 Biapplicative
instance Biapplicative Const where  bipure a _ = Const a  Const f <<*>> Const x = Const (f x)
應用 Biapplicative
Prelude Data.Biapplicative> ((+2),(*3)) <<*>> (3,4)(5,12)Prelude Data.Biapplicative Control.Applicative> Const (+2) <<*>> Const 3Const 5Prelude Data.Biapplicative> bimap (+) (*) <<$>> (2,3) <<*>> (3,4)(5,12)Prelude Data.Biapplicative Control.Applicative> bimap (+) (*) <<$>> Const 2 <<*>> Const 3Const 5
(<<**>>), biliftA2, biliftA3
(<<**>>) :: Biapplicative p => p a c -> p (a -> b) (c -> d) -> p b d(<<**>>) = biliftA2 (flip id) (flip id)biliftA2 :: Biapplicative w => (a -> b -> c) -> (d -> e -> f) -> w a d -> w b e -> w c fbiliftA2 f g a b = bimap f g <<$>> a <<*>> bbiliftA3 :: Biapplicative w => (a -> b -> c -> d) -> (e -> f -> g -> h) -> w a e -> w b f -> w c g -> w d hbiliftA3 f g a b c = bimap f g <<$>> a <<*>> b <<*>> c
Prelude Data.Biapplicative> (2,3) <<**>> ((2^), (3*))(4,9)Prelude Data.Biapplicative> biliftA2 (+) (*) (2,3) (4,5)(6,15)Prelude Data.Biapplicative Control.Applicative> biliftA2 (+) (*) (Const 2) (Const 3)Const 5

Haskell語言學習筆記(60)Biapplicative

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.