Пример файла.cabal для проекта fay
У меня есть простое веб-приложение, написанное на Скотти. Я хотел бы использовать fay для генерации JS-кода внешнего интерфейса и использования общих типов между внешним интерфейсом и внутренним интерфейсом.
На данный момент я запускаю свое приложение, используя cabal run
: в моем файле.cabal я определил "исполняемый файл" и "зависит от сборки" зависит от base
, Когда я включаю "fay" и "fay-base" в "build-зависящие", компиляция завершается неудачно, потому что Prelude
это неоднозначно.
Я понимаю, что "fay-base" должен заменить стандартную прелюдию, но я все еще хочу использовать стандартную прелюдию в бэкэнд-коде.
Итак, как мне написать свой файл.cabal и какие языковые расширения я должен использовать в моих файлах.hs, чтобы std Prelude и fay Prelude могли сосуществовать? Это правильный подход?
Я использую fay-0.20.1.1.
1 ответ
- Вы можете иметь
fay
в качестве зависимости, это обычный пакет на Haskell и не вызывает никаких конфликтов. fay-base
не заменяетbase
, Это базовая версия Fay, которую можно использовать только с кодом Fay, и наоборот.- Если вы хотите убедиться,
fay-base
в качестве зависимости вы можете зависеть от другого пакета Fay (например, небольшойfay-text
получитьfay-base
включается как переходная зависимость)
У вас есть несколько вариантов того, когда создавать код Fay:
- При запуске программы, используя Fay API или fay-builder, который позволяет вам указать опции fay в вашем файле Cabal (см. Этот пост в блоге, но пропустите часть о пользовательских хабах!)
- На каждый HTTP-запрос, полезный для разработки. Для этого вы можете использовать Fay API, fay-builder, yesod-fay, snaplet-fay или happstack-fay.
- Как крюк Кабала с кастомом
Setup.hs
(Опять плохая идея)