Fay: включить другой файл Fay?

У меня есть один файл Fay, который является сердцем моей программы, однако мне нужны некоторые помощники для моей логики, например, метод для замены подстрок. Из того, что я понимаю, если мне нужны такие методы, которые предлагаются многими библиотеками Haskell непосредственно из Hackage, я не могу использовать эти библиотеки Haskell, но я должен скопировать код в свой проект. Вот что я сделал, я скопировал и вставил функцию "заменить" вместе с другими помощниками из библиотеки MissingH в новый файл в моем проекте: Utils.hs.

Это Utils.hs компилируется без проблем с Fay. Также я импортирую его в свой основной файл Fay и получаю JS-файл для основного файла проекта без проблем. Однако во время выполнения я получаю следующую ошибку:

ReferenceError: Utils$$36$ is not defined

Я не думаю, что Fay включит код из вспомогательного файла в мой основной файл JS, поэтому я включаю оба файла JS в загрузочный HTML. И чтобы еще больше убедиться, что когда я загружаю основной файл, загружается файл utils, я загружаю его так:

$.getScript("Utils.js", function(){
    $.getScript("FayConfig.js");
});

Но, несмотря на это, я все еще получаю ошибку. Я попытался скомпилировать Utils.hs с "--library", но это не помогло.

Таким образом, мой вопрос: в какой настройке мне нужно добиться, чтобы сгенерированный JS нашел вспомогательные функции, которые я поместил в другой файл HS, зная, что во время компиляции Fay (очевидно) находит их без проблем? Есть ли пример такой настройки онлайн? Я обнаружил, что большинство использованных мной файлов Fay содержат весь код в одном файле HS, хотя они часто используют внешний код Fay из cabal, как в случае с fay-jquery. В моем случае, создание кабального проекта только для этих простых помощников было бы излишним.

1 ответ

Решение

Какую версию Fay вы используете (fay --version)? Кажется, вы используете версию старше 0.16, где забыли import Prelude не дал бы никаких предупреждений, см. этот закрытый билет. Так что обнови фэй и / или добавь import Prelude,

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

Вам не нужно вызывать fay несколько раз, fay выводит все зависимости в один и тот же файл js. Так что в этом отношении нет никакой разницы от использования кабала.

Надеюсь, это поможет, иначе, пожалуйста, дайте мне способ воспроизвести это.

Другие вопросы по тегам