Tag: ghci

如何在使用GHCi时为函数提供显式types声明?

如何在GHCi中定义这个函数的等价物(取自learnyouahaskell )? import Data.List numUniques :: (Eq a) => [a] -> Int numUniques = length . nub 如果没有types声明,GHCi接受函数定义,但是最后是一个无用的types: Prelude Data.List> import Data.List Prelude Data.List> let numUniques' = length . nub Prelude Data.List> :t numUniques' numUniques' :: [()] -> Int 结果函数只接受一个单位列表作为参数。 GHCi中有没有提供types声明的方法? 还是有另一种方法来定义这些不需要types声明的函数? 我没有看到GHCi指南中的明显线索,并尝试使用下列expression式(无效): > let numUniques' = ((length . nub) :: (Eq a) => [a] […]

在顶层函数中定义的内部函数testing和交互的最佳方法是什么?

当我使用Javascript进行编程时,我发现能够使用debugging器在任何时候停止程序执行并能够从那里运行命令并检查variables,这是非常方便的。 现在回到Haskell,有没有办法在交互式GHCI REPL中运行任意函数,还是仅限于在顶层声明的东西? 什么是工作和debugging内部函数和值的“标准”方法?

如何在GHCi中启用语言扩展?

我试图在GHCi中启用XRankNTypes 。 我该怎么做呢?

为什么ghci desugartypes列表和types的家庭? 可以select禁用吗?

我试图使我的图书馆的typesghci显示尽可能直观,但我遇到了很多困难,当使用更先进的typesfunction。 比方说,我有一个文件中的这个代码: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} import GHC.TypeLits data Container (xs::[*]) = Container 我用ghci加载它,然后input以下命令: ghci> :t undefined :: Container '[String,String,String,String,String] 不幸的是,ghci给了我相当难看的样子: :: Container ((':) * String ((':) * String ((':) * String ((':) * String ((':) * String ('[] *)))))) ghci已经删除了types级别string的糖。 有没有办法阻止ghci这样做,给我只是漂亮的版本? 在相关的说明,让我们说我创build一个types级Replicatefunction data Nat1 = Zero […]

如何在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 `|' 我也试图使用:{和:}命令,但我没有得到太多: Prelude> :{ unknown command ':{' use 😕 for help. 我在Linux上使用GHC交互版本6.6的Haskell 98,我错过了什么?

如果将cabal或工作目录设置为项目目录,则Emacs Interactive-Haskell repl无响应

我遇到了emacs Interactive-Haskell repl的奇怪行为。 当我input文件时, 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键一样。 如果我将这两个目录更改为除我的项目目录之外的某个path,则repl将正常运行,并根据预期评估expression式。

:多态值的冲刺?

我想知道为什么:sprint报告xs = _在这种情况下: Prelude> xs = map (+1) [1..10] Prelude> length xs 10 Prelude> :sprint xs xs = _ 但不是在这种情况下: Prelude> xs = map (+1) [1..10] :: [Int] Prelude> length xs 10 Prelude> :sprint xs xs = [_,_,_,_,_,_,_,_,_,_] 注意:我用-XNoMonomorphismRestriction运行ghci 。 这是否与第一种情况下的xstypes是多态有关,而不是第二种情况呢? 我想知道内部发生了什么。

GHCi中的多行命令

我有问题在ghci中input多行命令。 以下2行代码从文件中工作: addTwo :: Int -> Int -> Int addTwo xy = x + y 但是当我inputghci,我得到错误。 我也尝试把代码放在里面:{ … :} ,但是它们也不适用于这个例子,因为这只是将行附加到一行中,而不应该是这样。 我正在使用WinGHCi,版本2011.2.0.1