我已经通过找到的说明在 MacOS Mojave 上安装了 Haskell here ,即使用 stack
命令。然而,
import System.Random
引入了ghci
错误消息找不到模块“System.Random”。通过寻找解决方案,我遇到了这个discussion on Stackoverflow ,我按照 Michael Snoyman 发布的建议尝试该命令
stack install random
再次进入 ghci 之前。该命令产生了大量输出,其中一部分与 System.Random 相关:
random> configure
random> Warning: random.cabal:15:2: Tabs used as indentation at 15:2, 16:2, 17:2
random> Configuring random-1.1...
random> build
random> Preprocessing library for random-1.1..
random> Building library for random-1.1..
random> [1 of 1] Compiling System.Random
random>
random> /private/var/folders/bg/zjbyc9fj64d5kr98_x5bfjtm0000gn/T/stack946/random-1.1/System/Random.hs:43:1: warning: [-Wtabs]
random> Tab character found here, and in 74 further locations.
random> Please use spaces instead.
random> |
random> 43 | (
random> | ^^^^^^^^
现在我有一些问题:
(1) 我到底用这个 stack install 命令做了什么?我知道在不了解命令用途的情况下运行命令是有风险的,但事实是这正是我所做的。我的猜测是,这是获取一些库(类似于 Ruby 中的 Gems 或 Perl 中的 CPAN)并将它们添加到 Haskell 实现中。但如果这些是“官方”库,为什么我会收到语法错误?我是否应该在已下载的源上运行 expand
以摆脱选项卡?
(2) 这真的是安装 System.Random 的官方方法吗?还是有更好的方法来获取 Random 模块?我预计这种模块已经包含在发行版中,就像许多其他模块一样。
(3) 我现在可以做什么来获取我的随机数?因为我仍然收到找不到模块的错误(毫不奇怪,如果随机库的源代码有语法错误)
最佳答案
执行以下 2 个步骤来安装 stack
和 System.Random
brew install haskell-stack
stack ghci --package random
Configuring GHCi with the following packages:
GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help
Loaded GHCi configuration from /private/var/folders/5d/b7qfjxcd27v_3pgvdxzz1vr8nncyxt/T/haskell-stack-ghci/2a3bbd58/ghci-script
Prelude> import System.Random
Prelude System.Random>
stackage是 hackage 中精选的一组软件包,stack
是一个构建系统工具集。是的,它类似于 CPAN,但不是系统范围的,就像 Python 的 virtualenv。
关于Haskell:无法导入 System.Random,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618016/