在 nix-shell 中找不到模块

Could not find module in nix-shell

missing module可能是什么原因?

$ nix-shell -p haskellPackages.ghc -p haskellPackages.random

给予以下shell

[nix-shell:~]$ ghci 
GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /data/works/dotfiles/ghci
Prelude> import System.Random

<no location info>: error:
    Could not find module ‘System.Random’
    It is not a module in the current program, or in any known package.

安装和使用Haskell包的nix方法是什么?

我以为nixos.haskellPackages.<package>会自动注册ghc,但好像不是这样。

重新安装random里面的shell不要修复。

[nix-shell:~]$ nix-env -iA nixos.haskellPackages.random
installing ‘random-1.1’

[nix-shell:~]$ ghc-pkg list | grep -i random

我不知道这不起作用的原因。但是你可以试试这个命令:

nix-shell -p "haskellPackages.ghcWithPackages (pkgs: with pkgs; [random])"

适合我。现在 ghci 看到 System.Random 包裹。

更新:

这个 post 对 nix + haskell 冒险的初学者非常有帮助:

http://alpmestan.com/posts/2017-09-06-quick-haskell-hacking-with-nix.html