来自已加载模块对象的模块文件路径
Module filepath from loaded module object
在python中是
import argparser
print argparser.__file__
我的问题是:
- 我如何在 haskell 中做同样的事情,即通过在 haskell 中使用加载的模块对象获取模块的文件位置?
- 在haskell中,库文件是不可读的
.hi
格式。有没有 cabal install
的方法,我可以将源文件下载到 ~/.cabal
并在本地编译?
这并不能完全回答您的问题,但这是我在 Haskell 中找到模块位置的方式。假设我有一个名为 Data.Text
的模块,我想找到它的位置。然后我最初发现它的包名:
$ ghc-pkg find-module Data.Text
/nix/store/cq4qqjii3s9ghr6p59kkrdf44wnyhpp4-ghc-7.8.4/lib/ghc-7.8.4/package.conf.d
/home/sibi/.ghc/x86_64-linux-7.8.4/package.conf.d
text-1.2.0.4
现在我知道包名是text-1.2.0.4
。所以,现在我所做的就是使用这个命令来找到模块位置:
$ ghc-pkg describe text-1.2.0.4 # (Just text should also work)
这会给你很大的输出。您感兴趣的字段是 import-dirs
和 library-dirs
。
要查找安装包的来源,可以使用@Martin提到的cabal get <package_name>
。
我很确定你不能做 Haskell 中的第一件事。但是,如果你只是想自己找出这条路径,你可以使用命令
ghc-pkg describe <package>
其中 <package>
是模块所属包的名称。
要下载包的源代码,只需使用
cabal get <package>
它会将没有任何依赖项的源下载到当前目录中的目录 <package>-<version>
中。
在python中是
import argparser
print argparser.__file__
我的问题是:
- 我如何在 haskell 中做同样的事情,即通过在 haskell 中使用加载的模块对象获取模块的文件位置?
- 在haskell中,库文件是不可读的
.hi
格式。有没有cabal install
的方法,我可以将源文件下载到~/.cabal
并在本地编译?
这并不能完全回答您的问题,但这是我在 Haskell 中找到模块位置的方式。假设我有一个名为 Data.Text
的模块,我想找到它的位置。然后我最初发现它的包名:
$ ghc-pkg find-module Data.Text
/nix/store/cq4qqjii3s9ghr6p59kkrdf44wnyhpp4-ghc-7.8.4/lib/ghc-7.8.4/package.conf.d
/home/sibi/.ghc/x86_64-linux-7.8.4/package.conf.d
text-1.2.0.4
现在我知道包名是text-1.2.0.4
。所以,现在我所做的就是使用这个命令来找到模块位置:
$ ghc-pkg describe text-1.2.0.4 # (Just text should also work)
这会给你很大的输出。您感兴趣的字段是 import-dirs
和 library-dirs
。
要查找安装包的来源,可以使用@Martin提到的cabal get <package_name>
。
我很确定你不能做 Haskell 中的第一件事。但是,如果你只是想自己找出这条路径,你可以使用命令
ghc-pkg describe <package>
其中 <package>
是模块所属包的名称。
要下载包的源代码,只需使用
cabal get <package>
它会将没有任何依赖项的源下载到当前目录中的目录 <package>-<version>
中。