如何在 Haskell 应用程序中高效探索第三方库?

在使用 Haskell 大约两年后,我仍然是一个初学者。想一想最让我慢下来的是理解数据结构和 monad 堆栈的困难,这些数据结构和 monad 堆栈是由于使用生产系统所需的各种库而产生的。我经常发现自己处于一种情况,我很想简单地在某处设置一个断点,然后在该点检查绑定和嵌套数据结构。使用其他语言的复杂框架,这通常比研究它们的源代码和(通常不充分的)文档更能洞察数据和运行时行为。在 Haskell 中,什么是类似的“探索性”路线?

是的,这是一个相当命令式的想法,代码几乎等于控制流,绑定是具有可变状态的变量。然而,我认为,使用来自其他库的复杂 monad 堆栈,Haskell 程序并没有什么不同。

例如:我正在尝试使用会话构建一个 Servant 应用程序。在 Servant 客户端中,会话信息最终必须保存在堆栈中的某处。是Servant-Auth 还是较低级别的(Warp?)我想确切地知道在哪里,并弄清楚如何访问会话信息。我想编写一个测试来执行登录,执行一些请求,然后再次注销。

在 Python、Java 等中。我会在内存中的数据结构中进行登录、中断和探查,以找出信息所在的位置;然后与文档进行比较以了解如何最好地使用它。在 Haskell 中,我感觉被困在浏览库源代码和拼凑类型签名层,甚至构建最少的示例程序来理解正在发生的事情。这肯定比简单地检查内存中已有的内容慢十到五十倍,但我不能轻易探索。

因此,我认为“探索性”风格有助于理解复杂的库和框架,并快速提高生产力。因此,我正在寻找如何最好地探索 Haskell 代码的建议。即使使用复杂的应用程序堆栈,有没有办法为此使用 ghci?调试器?任何其他建议,比在我的代码中散布 trace 语句更能提供更深入的见解?

iCMS 回答:如何在 Haskell 应用程序中高效探索第三方库?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/475864.html

大家都在问