【问题标题】:Has anyone been able to integrate liquidhaskell with nixos?有没有人能够将 Liquidhaskell 与 nixos 集成?
【发布时间】:2018-08-14 06:49:52
【问题描述】:

我正在尝试在 NixOS 上使用 Liquidhaskell。我可以安装包(liquidhaskell-0.8.2.3),虽然不是 cabal 集成,因为它需要 cabal 1.18-1.25,但我有 cabal 2.0.1.0。

我已将liquidhaskell 包安装为 ghc-with-packages 设置的一部分:

[~:0]$ readlink $( type -p liquid )
/nix/store/pdbzl0p6k1klmajx969b6vvwyw9w0s6b-ghc-8.2.2-with-packages/bin/liquid

除此之外,包文本也安装在这个集合中:

[proclib:1]$ ls -ld /nix/store/pdbzl0p6k1klmajx969b6vvwyw9w0s6b-ghc-8.2.2-with-packages/lib/ghc-8.2.2/text-1.2.2.2/
dr-xr-xr-x 3 root root 68 Jan  1  1970 /nix/store/pdbzl0p6k1klmajx969b6vvwyw9w0s6b-ghc-8.2.2-with-packages/lib/ghc-8.2.2/text-1.2.2.2/

但是,液体看不到这个:

[proclib:1]$ liquid ~/bin/h/nix.hs 
LiquidHaskell Version 0.8.2.3
Copyright 2013-18 Regents of the University of California. All Rights Reserved.

liquid: Main: Could not find module ‘Data.Text’
Perhaps you meant Data.Set (from containers-0.5.10.2)
Use -v to see a list of the files searched for.

以上不是阴谋集团的一部分(试图从等式中消除阴谋集团的东西)。

我尝试过使用 nix-shell 来完成这项工作,但是 nix-shell 或 Liquid 会在语言编译指示上崩溃:

[~:0]$ nix-shell -p myHaskellEnv --run liquid ~/bin/h/nix.hs 
/nix/store/q1cwqhb6v8yx8vy4s5p6sxrq8s0bnqmy-nix.hs: line 5: {-#: command not found

感谢您的帮助。

【问题讨论】:

  • 最后一个错误实际上来自 bash 试图运行你的 haskell 源,就好像它是一个 shell 脚本一样。引用命令应该可以解决这个问题:--run "liquid ~/bin/h/nix.hs"

标签: haskell nixos liquid-haskell


【解决方案1】:

问题似乎是液体 haskell 忽略了 ghcWithPackages 包装器,因为它直接使用 GHC API。您可以根据this thread 解决此问题。

nix-shell -p 'haskellPackages.ghcWithPackages(pkgs:[pkgs.text (pkgs.liquidhaskell)])' -p z3 --run 'liquid --ghc-option="-package-db=$(ghc-pkg list | head -n 1)" ./hellotext.hs'

或者在某种程度上,

nix-shell -p 'haskellPackages.ghcWithPackages(pkgs:[pkgs.text])' -p z3 -p haskellPackages.liquidhaskell --run 'NIX_GHC_LIBDIR=$(ghc-pkg list | head -n 1)/.. liquid ./hellotext.hs'

这表明当您在基于cabal2nix 包的nix-shell 中时,它可以开箱即用。

【讨论】:

  • 非常感谢。这似乎行得通。附带说明一下,使用 cabal2nix 包对我不起作用,因为没有设置 NIX_GHC_LIBDIR - 那里似乎发生了一些变化。
  • 不客气。我没想到,但它应该可以在当前不稳定的频道上工作:cd someproject; nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/cc4677c36ee8d880e881459ad114fd2224b3ac1c.tar.gz --run 'echo NIX_GHC_LIBDIR is $NIX_GHC_LIBDIR'
  • 干杯。实际上,问题不在渠道上,而是在渠道上。我有一个流氓shell.nix;我正在尝试修复我的 default.nix,但空白我有一个 shell.nix 让我崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多