SORU
2 HAZİRAN 2009, Salı


Haskell: arasındaki fark . (nokta) ve $ (dolar işareti)

Arasındaki fark nedir (.) ve dolar işareti 6**? nokta. Anladığım kadarıyla, parantez kullanmaya gerek yok, hem de sözdizimsel şeker.

CEVAP
17 AĞUSTOS 2009, PAZARTESİ


$ operatör parantez kaçınmak için. Önce gelen bir şey bir şey üzerinde öncelik sahibi olur sonra ortaya çıkıyormuş.

Örneğin, okuyan bir satır var ki:

putStrLn (show (1   1))

Eğer bu parantez kurtulmak istiyorsanız, aşağıdaki satırların her biri de aynı şeyi yapardı:

putStrLn (show $ 1   1)
putStrLn $ show (1   1)
putStrLn $ show $ 1   1

. operatör birincil amacı parantez önlemek için değil, ama zinciri fonksiyonları için. Sen solda görünür her giriş için sağ tarafta görünür ne olursa olsun çıkış kravat sağlar. Bu genellikle daha az parantez içinde sonuçlar, ancak farklı çalışır.

Yine aynı örnek olacak:

putStrLn (show (1   1))
  1. (1 1) bir giriş yok, ve bu nedenle . operatörü ile kullanılabilir.
  2. show Int alıp String dönebilirsiniz.
  3. putStrLn String alıp IO () dönebilirsiniz.

Bu gibi putStrLn 20 *zincir:

(putStrLn . show) (1   1)

Eğer sizin beğeninize için çok fazla parantez varsa, $ operatörü ile onlardan kurtulmak:

putStrLn . show $ 1   1

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fufko

    fufko

    27 ŞUBAT 2006
  • glowpinkstah

    glowpinkstah

    16 Mayıs 2006
  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011