在Haskell中,有:?綁定多個參數
(>>=) :: Monad m => m a -> (a -> m b) -> m b
是否有一個功能:()
bind2 :: Monad m => m a -> m b -> (a -> b -> m c) -> m c
在Haskell中,有:?綁定多個參數
(>>=) :: Monad m => m a -> (a -> m b) -> m b
是否有一個功能:()
bind2 :: Monad m => m a -> m b -> (a -> b -> m c) -> m c
這是符號的意思。
bind2 :: (Monad m) => m a -> m b -> (a -> b -> m c) -> m c
bind2 ma mb f = do
a <- ma
b <- mb
f a b
它是如此簡單,我可能不會甚至定義一個額外的操作它,而我只用直接做記號。
不完全是,但你可以使用
,或者只使用第一個原則(>> =),像這樣(在ghci中試用)
Prelude> :set +t
Prelude> let bind2 x y f = x >>= \ a -> y >>= \ b -> f a b
bind2 :: Monad m => m a -> m a1 -> (a -> a1 -> m b) -> m b
Prelude> let bind2 x y f = do a <- x ; b <- y ; f a b
bind2 :: Monad m => m t -> m t1 -> (t -> t1 -> m b) -> m b
我也想要它。 – augustss
爲什麼不使用符號? – user2407038
@ user2407038因爲有時綁定更優雅。 –