【问题标题】:How to find the type of subfunctions with GHCI [duplicate]如何使用 GHCI 查找子功能的类型 [重复]
【发布时间】:2015-05-01 16:03:02
【问题描述】:

是否可以使用 GHCI 找到 where 语句中定义的函数类型?

例如,考虑这个函数:

myFunction a b c = case result of
                     2 -> ...
                            where
                                  subFunctA = ...
                     _ -> ...
                            where
                                  subFunctB = ...
                                  subFunctC = ...

myFunction 的类型可以通过:t myFunction 找到。

是否可以通过 GHCI 找到 subFunctAsubFuncBsubFunctC 的类型?

【问题讨论】:

    标签: haskell types ghci


    【解决方案1】:

    如果您有足够新的 GHCi 版本,您可以尝试使用 typed holes

    基本上,如果你在代码中写下下划线,编译器会输出一条错误消息,告诉你子表达式应该有什么类型。在您的示例中,只需将“...”替换为“_”即可。

    【讨论】:

      【解决方案2】:

      没有。 GHCi 无法访问其函数的源代码。即使您自己在 GHCi 或源文件中定义了函数也是如此。

      作为替代方案:由于您可以访问您想知道的函数的源代码,您可以将函数复制到源文件的全局范围内,编译它们,然后查看 GHC 为它们分配的类型。我经常这样做。 (另外,您可以直接将它们粘贴到 GHCi 中。)完成此操作后,您可以随心所欲地调用 :t 。这确实会产生比实际子函数更多的通用类型的风险,但它仍然可以帮助您。

      【讨论】:

        猜你喜欢
        • 2016-06-07
        • 2014-04-02
        • 1970-01-01
        • 2013-05-14
        • 2021-11-04
        • 2014-06-30
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        相关资源
        最近更新 更多