在 NixOS 上开始使用 purescript 需要帮助

Need help on start using purescript on NixOS

我正在尝试在 NixOs 上使用 purescript 设置 hello world 项目并有几个问题,

  1. Official purescript 网站推荐通过 npm 安装,但没有 nixos.nodePackages.purescript,而是我在 nixpkgs 中找到了至少 2 个变体
    • nixos.purescript
    • nixos.haskellPackages.purescript

有什么不同?

  1. 官方网站通过 npm 推荐 pulpbower,但只有 nodePackages.bower 可用,并且有未记录的 psc-package

处理纯脚本包的nix方法应该是什么?

  1. 官方网站上的示例代码(参见下面的 hello.purs)甚至无法编译,

有这些错误。

$ purs compile hello.purs

Error found:
at hello.purs line 1, column 1 - line 1, column 1

Unable to parse module:
unexpected "import"
expecting "module"

我在代码中添加了module Hello,但还是失败了。

$ purs compile hello.purs 
Error 1 of 2:

  in module Hello
  at hello.purs line 2, column 1 - line 2, column 15

    Module Prelude was not found.
    Make sure the source file exists, and that it has been provided as an input to psc.


  See https://github.com/purescript/documentation/blob/master/errors/ModuleNotFound.md for more information,
  or to contribute content related to this error.

Error 2 of 2:

  in module Hello
  at hello.purs line 3, column 1 - line 3, column 39

    Module Control.Monad.Eff.Console was not found.
    Make sure the source file exists, and that it has been provided as an input to psc.


  See https://github.com/purescript/documentation/blob/master/errors/ModuleNotFound.md for more information,
  or to contribute content related to this error.

正确的工作流程应该如何?


目标是用一个 hello.purs 来实现最小的示例项目 运行 在网络浏览器中。

这是hello.purs

module Hello where
import Prelude
import Control.Monad.Eff.Console (log)

greet :: String -> String
greet name = "Hello, " <> name <> "!"

main = log (greet "World")

如果您还可以为 nix-shell 提供 shell.nix 或为 nix-build 提供 default.nix,那将非常有帮助。

找到这个 2 岁的 guild,我正在尝试,但我仍然没有找到所有问题的答案。

  1. nixos.purescript 只是 nixos.haskellPackages.purescript 的静态可执行文件;这会跳过 building/installing PureScript 作为 Haskell 库
  2. 您可以通过 npm install pulp 安装 Pulp - 二进制文件将安装到 node_modules/.bin/pulp
  3. 示例代码无法编译,因为您尚未通过 Bower 下载依赖项。您可以通过 bower install purescript-prelude purescript-console.
  4. 安装它们

但是node_modules/.bin/pulp init会给你一个Bower文件,你可以运行bower install给你一个基本的项目。然后你可以 node_modules/.bin/pulp run 使用 node.js 来执行它,但你可能希望 pulp browserify --to example.js 得到一个文件,你可以把它放在 [=32= 的 <script> 标签中].