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

时间:2017-09-07 10:38:18

标签: purescript nix nixos

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

  1. Official purescript网站建议通过npm进行安装,但没有nixos.nodePackages.purescript,而是我在nixpkgs找到了至少2个变体
    • nixos.purescript
    • nixos.haskellPackages.purescript
  2. 有什么不同?

    1. 官方网站建议pulpbower通过npm,但只有nodePackages.bower可用且未记录psc-package
    2. 处理purescript包的nix方法应该是什么?

      1. 官方网站上的示例代码(参见hello.purs bellow)甚至无法编译,
      2. 出现这些错误。

        $ 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")
        

        如果您还可以为shell.nix提供nix-shelldefault.nix提供nix-build,那将非常有用。

        发现这个2岁guild,我正在尝试但我仍然没有回答所有问题。

1 个答案:

答案 0 :(得分:4)

  1. nixos.purescript只是nixos.haskellPackages.purescript的静态可执行文件;这会跳过构建/安装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.js执行node_modules/.bin/pulp run,但您可能希望pulp browserify --to example.js获取可以放入HTML中的<script>标记的文件。