haskell - 是否可以在 Haskell (ghci) 中显示函数名称?
问题描述
我知道由于 Haskell 进行了优化,因此无法显示函数的主体,但是有可能以某种方式显示它的名称吗?
我想要类似的东西
Prelude> f
[Function f]
类似于其他 REPL 所做的事情(Python、javascript 等)
我用 Haskell 得到的是
Prelude> f
<interactive>:2:1: error:
• No instance for (Show (Integer -> Integer)) arising from a use of ‘print’ (maybe you haven't applied a function to enough arguments?)
• In a stmt of an interactive GHCi command: print it
这对演示没有帮助。
解决方案
出于演示目的,您可以尝试使用该simple-reflect
软件包。它允许某些形式的符号计算:
> foldr f x [1,2,3]
f 1 (f 2 (f 3 x))
> foldl f x [1,2,3]
f (f (f x 1) 2) 3
请注意,它有其自身的局限性。例如(f . g) x
,除非使用合适的类型注释,否则将无法工作。[1] ++ x
根本行不通。
不过,如果您为演示准备示例,您可以提前检查它们并确保它们有效。
推荐阅读
- python - 可以在 Python 中使用 Azure 交互式登录吗?
- python - Jupyter Notebook:[WinError 10060] 连接尝试失败,因为连接方在一段时间后没有正确响应
- gem5 - gem5中src/arch/null下的NULL ISA架构是什么?
- java - 在这个特定的代码中,哪个更智能,浮点数还是整数?
- swift - 如何从 SwiftUI 的官方教程代码中解释 VStack{ .. }?
- python - sqlite 数据库中的洗牌值给出无
- scala - Scala 中的函数式编程练习 6.11。这种理解是如何工作的?
- python - 添加脚本以将 python 结果从 json 导出到 excel 或 csv 文件
- ruby - 有没有办法简单地替换包含转义字符的字符串元素
- rabbitmq - 关于rabbitmq消息持久化机制的问题