私は命令型言語、主にC ++とCでプログラミングを学んだので、機能的なアプローチは私にとって非常に新しいものです。
以前に関数/メソッドを書いていたとき、私は通常「インクリメンタル」アプローチを取りました(おそらくほとんどの人がそうします):コードの小さな部分を書き、それからこれまでの結果が期待どおりかどうかをチェックします(通常は単にそれらを印刷することによって) stdoutwithprintfまたはstd::cout)、アルゴリズムを改良し、アルゴリズムを強化し、これまでの結果が期待どおりかどうかを確認し(通常、printfまたはstd :: coutを使用してstdoutに出力するだけで)、改良します…私は非常にメソッド全体を1つのピースにまとめることはめったにありません。
この「インクリメンタル」アプローチに不可欠なのは、診断出力(上記の例ではprintfまたはstd :: cout)を持つ機能です。しかし、Haskellでは(今のところ私が理解している限り)、「putStrLn」はIOのみを返すため、「putStrLn」を使用してstdoutに何かを記述したい場合は、関数のシグネチャを変更する必要があります。印刷したい情報が含まれているが、「putStrLn」を呼び出した瞬間に印刷されないモナドですね。したがって、診断出力に「putStrLn」を使用するたびに、現在の関数のシグネチャや、他のすべての関数が呼び出す方法などを変更する必要があります…</ p>
では、関数の「ローカル変数」の値を標準出力に出力するための安価で簡単な方法はありますか?
それとも、ハスケルのプログラミングの基本的な部分を理解していないという兆候を私が求めているという単なる事実ですか?