问题标签 [ghci]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
function - 在 GHCi 中,为什么函数箭头的种类 `:kind (->)` 包含问号 `(->) :: ?? ->?-> *`?
在 GHCi(版本 7.0.2)中,如果我询问函数类型的种类,结果会带有问号:
为什么这种类型包括问号而不仅仅是星号* -> * -> *
?问号是什么意思?为什么其他类型只使用星号?
haskell - ghci '不在范围内:' 消息
我正在阅读“Learn you a Haskell”教程,我在这部分:
当我尝试执行这一行时,我得到:
我究竟做错了什么?
haskell - ghci 中的 :t 如何访问所有内省信息?
内省函数和数据类型等的类型类约束似乎是不可能的。但是,ghci 似乎可以做到这一点。
所以......不知何故,它知道类型类约束,因为它正在打印出来。它是如何做到的?
unicode - 如何破解 GHCi(或 Hugs)以便打印未转义的 Unicode 字符?
查看问题:通常,在交互式 Haskell 环境中,非拉丁 Unicode 字符(构成结果的一部分)会被转义打印,即使语言环境允许此类字符(与通过 直接输出相反putStrLn
,putChar
这看起来很好并且可读)——示例显示 GHCi 和 Hugs98:
我们可以猜测这是因为print
andshow
用于格式化结果,并且这些函数尽最大努力以规范、最大可移植的方式格式化数据——所以他们更喜欢转义奇怪的字符(也许,它甚至被拼写成Haskell 标准):
但是,如果我们知道如何破解 GHCi 或 Hugs 以人类可读的方式打印这些字符,即直接,未转义,那将是很好的。当在教育目的中使用交互式 Haskell 环境时,可以欣赏这一点,在非英语观众面前进行 Haskell 的教程/演示,您希望在他们的人类语言中展示一些有关数据的 Haskell。
实际上,它不仅可用于教育目的,还可用于调试!当您有在表示其他语言单词的字符串上定义的函数时,使用非 ASCII 字符。因此,如果程序是特定于语言的,并且只有另一种语言的词作为数据才有意义,并且您的函数仅在这些词上定义,那么在 GHCi 中调试时查看这些数据很重要。
总结一下我的问题:有哪些方法可以破解现有的交互式 Haskell 环境,以便在结果中更友好地打印 Unicode?(在我的例子中,“更友好”意味着“更简单”:我想print
在 GHCi 或 Hugs 中以简单直接的方式显示非拉丁字符,如putChar
, putStrLn
,即未转义。)
(也许,除了 GHCi 和 Hugs98 之外,我还会看看现有的 Emacs 模式,用于与 Haskell 交互,看看它们是否可以以漂亮的、未转义的方式呈现结果。)
haskell - 如何查看 Haskell/GHCi 中的函数定义?
我正在使用带有 GHC 6 的 Haskell 2010.1.0.0.1。:t
在 GHCi 提示符后键入函数名称,向我们显示函数的类型。有没有办法查看函数定义?
haskell - Haskell - fmap fmap 不起作用
我正在使用 GHCi(版本 6.12.3)来玩一下 Haskell。<*>
我最近读到了函子和应用函子,我想如果你不能只使用函子的原语来实现类似于应用函子的东西。经过一番思考,我想出了fmap fmap
一个(几乎)理想的类型
Functor f => f (a -> b) -> f (f a -> f b)
或更笼统地说
(Functor f1, Functor f2) => f1 (a -> b) -> f1 (f2 a -> f2 b)
我试过
我收到以下错误
按照建议编写上述类型签名没有帮助。最疯狂的是,当我输入时,:t fmap fmap
我得到了与上面相同的类型。
我究竟做错了什么?尽管 GHCi 找到了类型,但为什么会fmap fmap
给出类型错误?
debugging - Haskell中的无限递归
这个问题本质上是使用 GHCi 在 Haskell 程序中调试无限循环的副本。那里的作者手动解决了它,但我想知道其他解决方案。
(我的特殊问题)
我有一个包含递归调用的箭头代码,
应该使递归 testAVFunctor 不执行,因为这errorArrow
将导致 isError 返回 a Left (AVError "good error")
,它应该依次选择passError
路由并绕过递归调用。
非常奇怪的是,在函数组合等流行站点插入“跟踪”调用会导致程序发出有限数量的输出,然后冻结。不是我对无限项扩展问题的期望。(见编辑1)
如果有人很好奇,我已经在这里上传了我的源代码。
编辑 1
我没有找对地方(如果您想查看源代码,显然avEither正在循环)。我到达那里的方式是编译一个二进制文件并运行 gdb:
- gdb 主要
- r (运行代码)
- Ctrl+C (发送中断)。回溯将是无用的,但你能做的,是命中
- s (步骤)。然后,按住回车键;您应该会看到很多方法名称飞过。希望其中一个能够被识别。
您可以使用 ghc 标志进行编译-O0
以禁用优化,这可以显示更多方法名称。
编辑 3
显然,proc x -> do
上面的代码块导致代码生成组合子,这些组合子正在调用AVFunctor.arr
要调用的提升方法——其中的某些东西一定违反了惰性。如果我将顶级函数重写为
然后一切正常。我想是时候尝试学习和使用garrows(伯克利的一名研究生)。
我从经验中得出的一般结论是 ghci 调试可能会令人沮丧。例如,我设法将参数显示f
为AVFunctor.arr
局部变量,但我无法从中获得任何非常有用的信息:
修改后的源代码在这里
list - 更新列表中的元素列表?
可能重复:
更新单个列表中元素列表的列表?
我有一个值列表,如下所示:
并希望返回以下内容:
我有以下功能,仅适用于单独的列表:
但是,我似乎在处理列表中的这些多个列表时遇到了麻烦。我将如何设计一个函数来处理这两个列表(即另一个列表中的列表)?
仍然试图让我的头脑了解整个 (x:xs) 事情。
macos - 在 MacOS X 上的 GHCi 中工作的 Haskell 图形库
是否存在满足以下要求的 Haskell 图形库或绑定到外部库:
- 可以从 使用
ghci
,即我不必链接并重新启动程序。 - 适用于 MacOS X。(与 1 一起使用很棘手!)
- 可以做简单的矢量图形(线条、多边形、简单的填充和描边)。
- 可以将位图图像放在屏幕上。示例:blit 17x12 .bmp 图像。
?
请包含一个最小的源代码示例或对它的引用(只是屏幕上的一个窗口,可能在其中绘制一条绿线),以便我可以特别检查第 1 点和第 2 点。此外,如果这些功能请求之一更详细(例如 OpenGL + 4),请提供一个很好的参考。
PS:关于1和2,我知道enableGUI
诀窍,我愿意使用它。但是,大多数库都有一个问题,即您不能main
多次运行该函数,因此不符合条件。
编辑:为避免浪费您的时间,这里列出了我尝试过的软件包:
networking - TCP 在 GHCi 中工作,在使用 Leksah 编译的程序中缓冲直到程序退出
我编写了这个简单的原型客户端来向我正在开发的服务器发送命令。它可以在 GHCi 中完美运行,但编译后的版本会缓冲输入的所有内容,直到我输入“quit”并且程序退出。那时所有的输入文本都会被发送。
我究竟做错了什么?为什么编译时会有所不同?
更新:如果使用ghc Main.hs
. 使用Leksah通过 Package -> Build 编译时会出现问题。有人知道如何获取 Leksah 使用的命令行吗?
系统信息:OSX 10.6、GHC 7.0.3、网络 2.3.0.2