Questions tagged «ghci»

GHCi是格拉斯哥Haskell编译器的交互式环境(REPL)。

7
如何跨多行在ghci中定义函数?
我正在尝试定义ghci中跨越多行的任何简单函数,以以下示例为例: let abs n | n >= 0 = n | otherwise = -n 到目前为止,我已经尝试过在第一行之后按Enter键: Prelude> let abs n | n >= 0 = n Prelude> | otherwise = -n <interactive>:1:0: parse error on input `|' 我也尝试过使用:{and :}命令,但距离并不远: Prelude> :{ unknown command ':{' use :? for help. 我在Linux上使用适用于Haskell 98的GHC Interactive版本6.6,我缺少什么?
161 haskell  ghci 

5
GHCi中的多行命令
我在ghci中输入多行命令时遇到问题。 以下两行代码可从文件运行: addTwo :: Int -> Int -> Int addTwo x y = x + y 但是当我输入ghci时,出现错误: <interactive>:1:1: error: Variable not in scope: addTwo :: Int -> Int -> Int 我还尝试将代码放入:{ ... :},但它们也不适用于本示例,因为这只是将行追加到一行中,事实并非如此。 我正在使用WinGHCi,版本2011.2.0.1
134 haskell  ghci 

1
如果阴谋集团或工作目录设置为项目目录,则Emacs Interactive-Haskell不会响应
我在中的Interactive-Haskell repl遇到了奇怪的行为emacs。当我获取文件时,emacs迷你缓冲区会显示一系列交互式提示: Start a new project named 'myproject'? Cabal dir (guessed from myproject.cabal): Build target (empty for default): Set current directory: 如果我将cabal目录或当前目录保留为项目目录的默认值,则repl无响应。我可以在交互式Haskell窗口中看到一个lambda提示符,可以键入,但是当我按Enter键时,它永远不会求值。光标停留在同一行上,就像我根本没有按Enter一样。 如果我将这两个目录都更改为项目目录以外的其他路径,则repl会正常运行并按预期计算表达式。
124 haskell  emacs  cabal  ghci 


3
为什么ghci desugar类型列表和类型族?可以有选择地禁用它吗?
我试图使我的库的ghci显示类型尽可能直观,但是在使用更高级的类型功能时遇到了很多困难。 假设我在文件中有以下代码: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} import GHC.TypeLits data Container (xs::[*]) = Container 我将其加载到ghci中,然后键入以下命令: ghci> :t undefined :: Container '[String,String,String,String,String] 不幸的是,ghci给了我一个难看的外观: :: Container ((':) * String ((':) * String ((':) * String ((':) * String ((':) * String ('[] *)))))) ghci删除了用于类型级别字符串的糖。有什么方法可以防止ghci这样做并给我漂亮的版本吗? 在相关说明中,可以说我创建了一个类型级别的Replicate函数 …
93 haskell  types  ghci 


3
使用GHCi时如何为函数提供显式类型声明?
我如何在GHCi中定义此函数的等效项(取自learningyouahaskell)? import Data.List numUniques :: (Eq a) => [a] -> Int numUniques = length . nub 如果没有类型声明,GHCi会接受函数定义,但最终会导致无用的类型: Prelude Data.List> import Data.List Prelude Data.List> let numUniques' = length . nub Prelude Data.List> :t numUniques' numUniques' :: [()] -> Int 结果函数仅接受单位列表作为参数。 有没有办法在GHCi中提供类型声明?还是有另一种方法来定义这些不需要类型声明的函数? 我在GHCi指南中没有看到明显的线索,并尝试了如下所示的表达式(无济于事): > let numUniques' = ((length . nub) :: (Eq …

4
如何在解释模式下运行Haskell文件
有人告诉我您可以解释Haskell文件(我认为这意味着它们将像Ruby / Python / Perl一样工作)。但是,我找不到GHC上的命令行选项。它总是想编译我的文件。也看了GHCi,但它总是使我陷入混乱。 我基本上只是想做ghc -i MyFile.hs(其中-i是我假装与解释模式相关的虚假标志)并执行它,以便在尝试想法和学习时可以快速获得反馈。


1
Haskell中(^)的怪异行为
为什么GHCi在下面给出错误的答案? GHCi λ> ((-20.24373193905347)^12)^2 - ((-20.24373193905347)^24) 4.503599627370496e15 Python3 >>> ((-20.24373193905347)**12)**2 - ((-20.24373193905347)**24) 0.0 更新 我将实现Haskell的(^)函数,如下所示。 powerXY :: Double -> Int -> Double powerXY x 0 = 1 powerXY x y | y < 0 = powerXY (1/x) (-y) | otherwise = let z = powerXY x (y `div` 2) in …

1
Haskells弱头范式
我偶然发现了一些令人讨厌的东西。我知道haskell可用于弱头正常形式(WHNF),而且我知道这是什么。将以下代码键入ghci(据我所知,我正在使用命令:sprint,将表达式简化为WHNF): let intlist = [[1,2],[2,3]] :sprint intlist 给intlist = _这使得完全意义的我。 let stringlist = ["hi","there"] :sprint stringlist 给stringlist = [_,_] 这已经使我感到困惑。但是之后: let charlist = [['h','i'], ['t','h','e','r','e']] :sprint charlist 令人惊讶地给 charlist = ["hi","there"] 据我了解,Haskell,字符串不过是字符列表,这似乎可以通过检查类型"hi" :: [Char]和来确认['h','i'] :: [Char]。 我感到困惑,因为根据我的理解,以上所有三个示例大致相同(列表列表),因此应简化为相同的WHNF,即_。我想念什么? 谢谢
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.