gpt4 book ai didi

haskell - 如何在 Haskell 的文件中获取任意表达式的类型?

转载 作者:行者123 更新时间:2023-12-03 15:11:21 24 4
gpt4 key购买 nike

:type还不够,因为我想要的表达式可能包含本地定义的变量,比如用 <- 分配的东西, letwhere .类型的空洞(用 _ 替换表达式并用 ghc 加载)很接近,但它们给了你在那里接受的东西,这可能比你好奇的表达式更通用。

我以为我找到了 :type-at 的头奖,但我不能让它像我希望的那样工作。使用这个名为“thing.hs”的文件:

something :: ()
something = ()

main :: IO ()
main = return something

这是我使用 :type-at 时得到的结果:
> :set +c
> :l thing.hs
[1 of 1] Compiling Main ( thing.hs, interpreted )
Ok, one module loaded.
Collecting type info for 1 module(s) ...
> :type-at thing.hs 5 8 5 13 -- "return" on last line

<no location info>: error: not an expression: ‘’
> :type-at thing.hs 5 1 5 4 -- "main" on last line
:: IO ()
> :type-at thing.hs 5 15 5 23 -- "something" on last line

<no location info>: error: not an expression: ‘’

这与使用 :type 基本相同。 .我希望我什至能够通过 return something 的跨度并获取 Monad a => a ()IO () .如果可以在单独查看表达式的类型和“在那一点”的表达式类型之间进行选择(在受到类型孔出现的类型的限制之后),那会更酷,但两者都可以。

最佳答案

当我尝试 :type-at thing.hs 5 8 5 14 , 我得到 :: () -> IO () . :type-at thing.hs 5 14 5 24也有效,:type-at thing.hs 5 14 6 1 也是如此.

因此,右边界应该是表达式末尾的单元格。

关于haskell - 如何在 Haskell 的文件中获取任意表达式的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48674160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com