我学习了命令式语言的编程,主要是 C++ 和 C,所以函数式方法对我来说是非常新的。
当我之前编写函数/方法时,我通常采用“增量”方法(可能大多数人都这样做):编写一小部分代码,然后检查到目前为止的结果是否符合预期(通常只是将它们打印到使用 printf 或 std::cout 的标准输出),改进算法,增强算法,然后检查目前的结果是否符合预期(通常只需使用 printf 或 std::cout 将它们打印到标准输出),改进......我非常很少将整个方法写在一篇文章中。
这种“增量”方法的基本要素是具有诊断输出的能力(在我上面的示例中为 printf 或 std::cout)。但是在 Haskell 中(据我目前所知),如果我想使用“putStrLn”向标准输出写入内容,则必须更改函数的签名,因为“putStrLn”只返回一个 IO Monad 包含我想要打印的信息,但在调用“putStrLn”时不打印它,对吧?因此,每次我想使用“putStrLn”进行诊断输出时,我都必须更改当前函数的签名以及我所有其他函数调用它的方式等等……</p>
那么有没有一种便宜又简单的方法可以将函数的“局部变量”的值打印到标准输出?
或者仅仅是我要求的事实表明我不了解 Haskell 编程的基本部分?