внимания?Есть ли подводные камни?
Внимания стоит, если нужен для задачи. Подводные и рекоммендации: - Для сборки может потребоваться 10+GB RAM. - Не стоит писать фронт на хаскеле, потому что это неудобно и увеличивает время и память сборки. - Для релиза js можно использовать ghcjs 8.6.5 макс, т.к. с 8.10.7 версией есть проблемы с размером выходного файла (link). Использую 8.6.0.1 из pkgs из репы miso (link). - ghcjs не поддерживает ghci. GHC можно использовать с jsaddle (link, link), но я не стал. - Для разработки hs можно использовать GHC 9.6.2. С js-бэкендом собрать проект не получилось. (flake) - Релизить можно как при помощи nix build, так и cabal build в девшеле (nix develop). Собирать лучше cabal build, потому что часть сборки кэшируется. - Полученный js со всем-всем-всем может содержать одинаковые топлевельные имена, на которые ругается TypeScript при import. Я не был уверен, что смогу правильно отредактировать файл, поэтому решил не делать import в основное приложение, а грузить через script. - Сделал обертку с единственной нужной функцией (link) и зову ее из TS (link, link). Сам js подгружаю как <script> и жду, пока функция будет доступна (link). - Размер полученного js сейчас ~4 мб.
Ещё не стоит ожидать что пакеты где есть ccall или capi заработают с ghcjs. FFI C код так и не понял как подцепить туда.
Спасибо за помощь
я не согласен с тем, что "Не стоит писать фронт на хаскеле, потому что это неудобно". Из этой фразы можно убрать слово "фронт" и, на мой взгляд, получить эквивалентное утверждение. Проще говоря, - мне "удобно".
Окей, для меня неудобно.
нет, для разных задач разная удобство
> Не стоит писать фронт на хаскеле, потому что это неудобно и увеличивает время и память сборки. Спорная позиция и однобокое представление
Посмотри тред. Я уже не могу отредактировать.
Будь ласка, раскрой тему.
Да, неудобно, да, долго, но есть причины писать фронт на сабже даже с этими неудобствами Правда, это зависит от того, как идёт разработка
Обсуждают сегодня