2015-10-10 20 views
7

tüm Yesod'dan web uygulamaları için örnek kod üzerinde Bu tür gösterim görmeye ve ne anlama geldiğini hiçbir fikrim yok ediyorum:X {..} <- getYesod notasyonu

getHomeR :: Handler Html 
getHomeR = do 
    App {..} <- getYesod 

bu sözdizimi ne anlama geliyor? şifreli {..} yerine

getHomeR :: Handler Html 
getHomeR = do 
    App x <- getYesod 

yani bazı tanımlayıcı x: Ben de aşağıdaki görüyorum

, ben ilgili, gösterimini üstlenecek.

cevap

10

Bunlar record wildcards olarak adlandırılır - bir kayıt tanımı (bu durumda App) verilirse, desen App { .. } tüm alan adlarını kapsam içine alır. Örneğin aşağıdaki kayıt tanımını

{-# LANGUAGE RecordWildCards #-} 
data Test = Test { a :: Int, b :: Int } 
verilen Eğer örneğin kapsam içine a ve b alanları getiren bir desende üzerinde eşleşebilir

sumTest :: Test -> Int 
sumTest Test {..} = a + b 
+1

Doğrudan GHC belgelerindeki bir bölüme bağlayabilirsiniz. Örneğin: https://downloads.haskell.org/~ghc/7.10.2/docs/html/users_guide/syntax-extns.html#record-wildcards –

+2

@TaylorFausak - Teşekkürler, bağlantıyı güncelledim. – Lee

İlgili konular