Я застрял со следующей ошибкой после крупного рефакторинга кода:
• Couldn't match type ‘Endpoint.AuditLog.Routes
(AsServerT (AppM '[] ()))’
with
--
-- complete API type comes here
--
Expected type: ServerT Routes (AppM '[] ())
Actual type: Endpoint.AuditLog.Routes (AsServerT (AppM '[] ()))
• In the expression: (Endpoint.AuditLog.server appRunners)
In an equation for ‘prodServer’:
prodServer = (Endpoint.AuditLog.server appRunners)
Я прочитал и перечитал документацию , но, похоже, не могу найти, где находится ошибка. Этот код работал ранее, и я изменил Endpoint.AuditLog.server :: Routes (AsServerT AppM)
на Endpoint.AuditLog.server :: AppRunners m n -> Routes (AsServerT n)
и подтвердил, что тип следующих выражений, похоже, одинаков во всем рефакторе; в основном Routes (AsServerT AppM)
изменилось на Routes (AsServerT (AppM '[] ()))
ghci> :t (Endpoint.AuditLog.server AppM.appRunners)
(Endpoint.AuditLog.server AppM.appRunners) :: Routes (AsServerT (AppM '[] ()))
Следующий фрагмент также структурно одинаков для всего рефакторинга:
type Routes = (ToServant Endpoint.AuditLog.Routes AsApi)
prodServer :: ServerT Routes (AppM '[] ())
prodServer = (Endpoint.AuditLog.server AppM.appRunners)
Как мне отладить эту ошибку? Поскольку задействовано много семейств типов, есть ли способ увидеть, к чему упрощают следующие выражения на уровне типов:
ServerT Routes (AppM '[] ())
Endpoint.AuditLog.Routes (AsServerT (AppM '[] ()))