SORU
2 Mayıs 2011, PAZARTESİ


Tımar kullanmak için parametreleri sipariş

Son zamanlarda flip \x -> foo bar x 42 gibi kesmek gerçekleştiği çok fazla kod vardı çünkü parametrelerin sırasını değiştirmek için kod refactored var iki kez.

Fonksiyon bir imza tasarlarken ilkelerine beni tımar en iyi şekilde yapmak için ne yardım eder?

CEVAP
2 Mayıs 2011, PAZARTESİ


Ve kısmi uygulama kolayca tımar destekleyen diller için, argümanlar, aslında Chris Okasaki bir zorlayıcı serisi var:

  • Son değişken olarak veri yapısı

Neden? O zaman 3 ** güzel. E. g. insert 1 $ insert 2 $ insert 3 $ s. Bu da functions on state için yardımcı olur.

Standart kütüphane gibi "kaplar" follow this convention.

Başka argümanlar bazen kapalı olabilir yada çok veri yapısı ilk koymak için, biraz daha özlü statik bir yapı (örneğin, Ara) fonksiyonları verimli verilmiştir. Ancak, geniş bir fikir birliği özellikle ağır programlama dilinde * sembolü kodu doğru iter beri bu bir kazan daha az olduğu görünüyor.

  • En farklı argüman son koy

Özyinelemeli işlevler, ortak koymak iddiası değişir çoğu (örneğin bir akü) en son bağımsız değişken, argüman değişir en azından (örneğin bir işlev bağımsız değişken) başlangıç. Bu veri yapısı ile son tarzı oluşturur.


Okasaki bakış açısının bir özeti his Edison library (tekrar, başka bir veri yapısı kitaplığı) olarak verilmektedir

  • Kısmi uygulama: değişkenler statik daha genellikle kısmi uygulama kolaylaştırmak için başka argümanlar da önce ortaya çıkar.
  • Koleksiyon son görünür: bir işlemi tek bir koleksiyon sorguları veya varolan bir koleksiyonu değiştirir tüm durumlarda, koleksiyon tartışma dün görünecektir. Bu Haskell datastructure kütüphaneler için de facto standart bir şeydir ve API tutarlılık katıyor.
  • En olağan düzenbir işlemi birden fazla datastructure bilinen matematiksel bir fonksiyonu temsil eder, bu bağımsız değişken işlev için en olağan argüman sırası maç için seçilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Authority

    Android Auth

    3 NİSAN 2011
  • Brandon McCrary

    Brandon McCr

    15 Ocak 2012
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007