2015-05-07 3 views
0
import Yesod 
import Data.Text 

data App = App 

instance Yesod App 

mkYesod "App" [parseRoutes| 
      /Home GET 
       |] 

getHome :: String -> Handler Value 
getHome = object ["name" .= ("Adam"::Text)] 

main = warpDebug 2012 App 

бросает ошибку, как,Yeson.json.object применяется слишком много аргументов

Couldn't match expected type ‘String -> Handler Value’ 
       with actual type ‘Value’ 
    Possible cause: ‘object’ is applied to too many arguments 
    In the expression: object ["name" .= ("Adam" :: Text)] 
    In an equation for ‘getHome’: 
     getHome = object ["name" .= ("Adam" :: Text)] 

object не в области видимости в прелюдии. Какой пакет/модуль определяет это? Почему в этом случае не требуется пара ключ-значение?

ответ

2

object не входит в сферу применения в прелюдии. Какой пакет/модуль определяет это?

Yesod.Json

Почему не взять пару ключ-значение в указанном выше случае?

Он берет пара ключевых значений только отлично. В сообщении об ошибке сообщается, что object дает вам Value, но вы указали getHome типа String -> Handler Value, а не Value.

«Возможная причина», кажется, просто вводит в заблуждение в этом случае.

+0

Я попытался изменить тип. Он дал эту ошибку. Не удалось сопоставить ожидаемый тип «HandlerT App IO res0» с фактическим типом «Значение» . 'getHome' - мой обработчик HTTP GET, который возвращает ответ json. Как я могу обернуть тип 'Value' с помощью' Handler' вместо изменения типа? –

Смежные вопросы