Обработчик дочерней функции Yesod - PullRequest
0 голосов
/ 06 июня 2018

У меня есть открытая функция (простая функция с одним аргументом Text, которая выполняет операции ввода-вывода, а затем возвращает bool) на моем дочернем сайте.Но каждый раз, когда я звоню с моего основного сайта boolVal <- Sub.getVal "abc", он выдает следующую ошибку:

Couldn't match type ‘Sub’ with ‘App’
Expected type: HandlerT App IO Bool 
Actual type: HandlerT Sub (HandlerT master0 IO) Bool

фрагмент кода дочернего сайта

type SubHandler a = forall master. Yesod master => HandlerT Sub (HandlerT 
master IO) a

getVal :: Text -> SubHandler Bool
getVal name = do
    -- some operations including IO
    return False

фрагмент кода основного сайта

import Sub

getHomeR :: Handler Html
getHomeR = do
    boolVal <- Sub.getVal "abc"
    defaultLayout $ do
        $(widgetFile "home/index")

Маршруты дочерних сайтов работают нормально, и я сдуру предположил, что SubHandler зарегистрировался бы в основном приложении, как по волшебству, как и большинство вещей на хаскеле, ха

спасибо

к вашему сведению, я был бы очень признателентехнический ответ на этот вопрос, а не просто «типы не совпадают», хотя мое понимание объявлений классов и экземпляров не так уж и велико - работа продолжается:)

...