2013-01-05 23 views
9

Monad sınıf iki monadik işlemleri sekansları bir >> yöntemi tanımlamaktadır:Haskell standart kütüphanesinde neden hiçbir << yoktur?

>> :: Monad m => m a -> m b -> m b 

bağlama operatör >>= sahip olan bir ters çevrilmiş-argüman eşdeğer =<<; monadik fonksiyon kompozisyonu ('balık') operatörleri >=> ve <=< gibi. Yine de (birkaç dakika Hoogling'den sonra) << görünmüyor. Bu neden?

Düzenleme: Bunun büyük bir sorun olmadığını biliyorum. Sadece belirli kod satırlarının soldaki operatörlerle nasıl görüneceğini seviyorum. x <- doSomething =<< doSomethingElse sadece, hepsi aynı şekilde giden x <- doSomethingElse >>= doSomething'dan daha güzel görünüyor. Benim kadarıyla

+0

kimse bunun için bir dava bile. –

+0

Onlar, '= <<' ve '<= <' yaptıklarında düşünmediler mi? Beni neden rahatsız ettiğini bilmiyorum, sadece bir gözetim gibi görünüyor. –

+0

Uh, bu örneklerin ikisi de aynı şeyi yapıyor mu? – MathematicalOrchid

cevap

10

iyi bir neden yoktur. Not: Monad, Applicative örneğinin de olması gerektiğinden, sıralama araçları olarak <* ve *> kullanabilirsiniz.

+0

İyi fikir! Teşekkürler. –

+10

Ancak, * * '' nin '>>' ile eşdeğer olmasına rağmen, bir <* b' 'b *> a' değerine eşit DEĞİLDİR. – dave4420

+0

@ dave4420 bu iyi bir nokta. 'flip (*>)' ve 'flip (>>)' her zaman bir seçenek olur. –

İlgili konular