[英]Printing out Haskell's evaluation (rewriting) steps for educational/learning purposes. Is it possible?
我通过使用书中的一个例子来描述这个问题。
在Simon Thompson的书“HASKELL函数式编程工艺”(第82页)(见下图)中显示了fac 4
的评估步骤。
题:
有可能使用一些工具或一些“Haskell调试器”来写出GHCi在评估fac 4
的价值时使用的评估步骤吗?
优选地,以人类可读的格式,用于教育和学习目的。
对每个评估步骤进行一些自动解释也是很好的,例如在重写步骤中使用了哪个等式。
我的主要目的是更深入地了解当我运行简单的教育Haskell示例程序(如fac
)时如何执行重写步骤。
有没有办法做到这一点 ? 如果有,怎么样?
有一个名为Lambda bubble pop的工具,您可以在其中单击表达式以查看表达式如何减少。 请注意,该工具仅支持整数和列表,但仍然是一个很好的教育工具。
实际工具的快照:
是和否。我还没有看到一个工具,它在你的教科书中描述了这种逐行评估 - 主要是因为Haskell程序没有“重写”表达式。
但是,有一个工具可以逐步可视化Haskell的实际评估策略: ghc-vis
。 而不是仅仅评估的结果,就像在控制台上显示它ghci
呢,它显示未计算结果的图形表示-你可以强制评估它咚由thunk的,直到你在原始的价值观和结构到达。
作为它可以做什么的一个例子,这里的评估直到无限斐波那契序列的第三个列表成员:
评估0,1和1,列表的其余部分是回顾列表本身部分的thunk http://felsin9.de/nnis/ghc-vis/fib1.svg
资料来源: 项目网站的示例部分 。 你应该看看他们所有人!
这是一个非常有用且非常有用的功能 - 据我所知,它在任何地方都无法使用。 :-(
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.