SORU
23 EYLÜL 2014, Salı


ne Haskell'yok s &;|> lt operatör?

Neler yaşadığını haskell belgelerine her zaman biraz acı bana, çünkü tüm bilgi almak hakkında bir fonksiyon genellikle bir şey daha: f a -> f [a] bunun anlamı, herhangi bir sayıda olan şey.

<|> işlevi böyledir.

Verilen tüm istediğim bu: (<|>) :: f a -> f a -> f a ve işte bu kadar< . em^"" . çağrışımlı ikili işlem ...

Control.Applicative incelemeye göre görünüşte ilgisiz şeyler uygulanmasına bağlı olarak yaptığı öğrenin.

instance Alternative Maybe where
    empty = Nothing
    Nothing <|> r = r
    l       <|> _ = l

Tamam, döner sağ olmazsa sol, aksi halde döner sol, anladım.. Bu yol bana inan bu bir "sol veya sağ" operatör, biraz mantıklı düşünüldüğünde kullanımı | |'nın tarihsel olarak kullanmak "VEYA"

instance Alternative [] where
    empty = []
    (<|>) = (  )

Sadece liste birleştirme operatör aramaları hariç... benim fikrim parçalayarak...

Tam olarak işlevi nedir? Onun ne faydası var? Nereye şeylerin büyük düzeni sığacak mı?

CEVAP
23 EYLÜL 2014, Salı


Genellikle bunun anlamı, "seçim" ya da "paralel" a <|> b ya da bir "seçim" a b a b yapılan paralel. Ama başa dönelim.

Gerçekten, (<*>) (<|>) gibi typeclasses işlemleri için pratik bir anlamı yok. Bu işlemler iki şekilde anlam verilmiştir: (1) kanun ve (2) örneklemesi yoluyla. Bir söz etmiyoruzözellikleAlternative örnek sonra sadece (1) Bölüm I, sezgi anlam için kullanılabilir.

"Çağrışımsal" a <|> (b <|> c) (a <|> b) <|> c olarak aynı olduğu anlamına gelir. Bu sadece hakkında bakım anlamına gelir olarak yararlıdırsırabirlikte bir şeyler (<|>), onların değil zincirleme". ağaç yapısı

Diğer kanunların empty ile kimliği vardır. Özellikle, a <|> empty = empty <|> a = a. Bizim sezgi "seçim" ya da "" bu yasalar olarak okuma "ya (imkansız bir şey) olmalı" ya da "yanında (boş işlem) sadece bir" paralel ile empty "mod" Alternative. bir arızası falan mı gösterir

Başka kanunlara nasıl (<|>)/empty etkileşim ile fmap (Functor) veya pure/(<*>) (Applicative), ama belki de en iyi şekilde geleceğe anlama anlamı (<|>) incelemek için bir çok yaygın bir örnek, bir tür oluşturur Alternative Parser.

x :: Parser A y :: Parser B (,) <$> x <*> y :: Parser (A, B) x ayrıştırırve sonraSırayla y. , (fmap Left x) <|> (fmap Right y) ayrıştırır aksineyax y iki Olası çözümler denemek için x ile başlıyor. Diğer bir deyişle, bir gösterirşubeeğer ayrıştırma ağacı, bir seçim, ya da ayrıştırma paralel bir evren.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • booba1234

    booba1234

    22 Temmuz 2006
  • Kindness

    Kindness

    23 Ocak 2006
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011