Я просто изучаю Йесод/Хаскелл.Синтаксис Haskell: значение {..} и @
В следующем коде (http://www.yesodweb.com/book/restful-content) есть две вещи, которые я не понимаю (и следующий вопрос).
{..}
- Что это значит? (Это трудный термин для Google.)[email protected]
- что делает знак@
?- Есть ли способ найти ответы на ungoglable синтаксис Haskell, не беспокоя вас всех на StackOverflow?
код:
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Data.Text (Text)
import Yesod
data Person = Person
{ name :: Text
, age :: Int
}
instance ToJSON Person where
toJSON Person {..} = object
[ "name" .= name
, "age" .= age
]
data App = App
mkYesod "App" [parseRoutes|
/HomeR GET
|]
instance Yesod App
getHomeR :: Handler TypedContent
getHomeR = selectRep $ do
provideRep $ return
[shamlet|
<p>Hello, my name is #{name} and I am #{age} years old.
|]
provideJson person
where
[email protected] {..} = Person "Michael" 28
main :: IO()
main = warp 3000 App
Итак, 'person @ Person {..} = Человек« Майкл »28' мог быть заменен на' name = «Michael» ',' age = 28' и 'person = Person name age'? – fadedbee
Не совсем. Я обновил ответ, чтобы показать альтернативы. –
Спасибо, я забыл, что 'name' и' age' - это имена функций 'Person', поэтому вам нужны новые идентификаторы. – fadedbee