GHCi 对 MonadError 的默认实现是什么?
考虑以下测试函数: testError :: (Error e, MonadError e m) => Bool -> m () testError True = return () testError False = throwError $ strMsg "…
为什么这个 Haskell 语句不进行延迟计算?
我定义了以下函数: ex 1 x = 1 ex 0 x = 0 ex b x = b ** x 然后,当我执行以下命令时: 1 `ex` (sum [1..]) 它尝试计算无限序列的总和,而不是偷懒…
使用 GHCi 时如何为函数提供显式类型声明?
如何在 GHCi 中定义此函数的等效项(取自 learnyouahaskell)? import Data.List numUniques :: (Eq a) => [a] -> Int numUniques = length . nub 如…
为什么我不能在 ghci 中定义新类型?
当我尝试定义新类型时,在 ghci 中出现错误: Prelude> data Point = Pt Int Int :1:0: parse error on input `data' Prelude> let data Point = Pt I…
如何让 ghci 查看我从 cabal 安装的软件包?
我已经使用 cabal 安装了这样那样的软件包,并且我可以使用 cabal build 构建依赖于它的程序。但是当我在 ghci 中加载相同的程序时,ghci 抱怨它“找…
如何在 GHCi 中使用多个 where 子句?
我是第一次使用 GHCi,在编写多行函数时遇到了一些问题。 我的代码如下: Prelude> :{ Prelude| let diffSquares lst = abs $ squareOfSums lst - sum…
ghci 未从文件加载函数
在 test.hs 中,我有: doubleMe x = x + x 在 ghci 中,我输入: Prelude> :l test [1 of 1] Compiling Main ( test.hs, interpreted ) Ok, modules …
Haskell 中的无限循环?
我认为这会产生一个阶乘函数... (在 ghci 内) Prelude> let ft 0 = 1 Prelude> let ft n = n * ft (n - 1) Prelude> ft 5 (无限期挂起,直到 ^C)…
如何在ghci中跨多行定义一个函数?
我试图在 ghci 中定义跨多行的任何简单函数,以以下为例: let abs n | n >= 0 = n | otherwise = -n 到目前为止,我已尝试在第一行后按 Enter 键: P…
如何让ghci支持^p上去?
我使用 Ctrl pa 很多而不是向上箭头在终端上向上移动。如何让ghci支持Ctrl p上去? 我从端口使用 ghc98 的 ghci 。 Mac OS X 10.5.8。…
为什么 ghci 说 1.1 + 1.1 + 1.1> 3.3 是真的吗?
我最近正在学习 Haskell 教程,并在交互式 ghci shell 中尝试一些简单的 Haskell 表达式时注意到了这种行为: Prelude> 1.1 + 1.1 == 2.2 True Prelud…