我尝试按照此Blog的示例从命令行运行Haskell可执行文件。我的机器运行NixOS。
该博客是关于将Markdown识字的haskell编译为html,以发布博客文章。该过程的第一步是hscolour在.lhs文件上运行haskell程序,以创建一个.mkd文件,该文件的代码语法通过html和css突出显示。
cat blah.lhs | hscolour -lit -css > blah.mkd
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行此命令时,出现以下command not found错误。
$ cat blah.lhs | hscolour -lit -css > blah.mkd
hscolour: command not found
Run Code Online (Sandbox Code Playgroud)
我不确定我遇到的问题是特定于NixOS,还是更广泛地将haskell可执行文件提供给命令行。如何使haskell可执行文件(如hscolour可从命令行获得)?
我试图从内部运行此命令nix-shell这hscolour已经建成。hscolour仍然找不到该命令。
$ nix-shell -p "haskellPackages.ghcWithPackages (pkgs: with pkgs; [hscolour])"
$ cat functor-proofs.lhs | hscolour -li
hscolour: command not found
Run Code Online (Sandbox Code Playgroud)
有两件事要知道:
您不需要GHC,只需要hscolour的可执行文件,您可以从中获取该文件haskell.lib.justStaticExecutables haskellPackages.hscolour。
hscolour的二进制文件HsColour不是hscolour。
展示:
$ nix-shell -p 'haskell.lib.justStaticExecutables haskellPackages.hscolour' --run 'HsColour --version'
HsColour 1.24
Run Code Online (Sandbox Code Playgroud)