haskell 在nix-shell中找不到模块

goqiplq2  于 2022-11-14  发布在  Shell
关注(0)|答案(1)|浏览(191)

What could be the reason for missing module ?

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

give following 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.

And what is the nix way to install and use Haskell packages?
I thought nixos.haskellPackages.<package> will automatically registered for ghc but it seem like it is not the case.
Reinstall the random inside the shell don't fix it.

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

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

gcxthw6b1#

I'm not aware of reasons why this doesn't work. But you could try this command:

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

Works for me. And now ghci sees System.Random package.

UPDATE:

This post is really helpful for beginners in their nix + haskell adventure:
https://web.archive.org/web/20170910171927/http://alpmestan.com/posts/2017-09-06-quick-haskell-hacking-with-nix.html

相关问题