私はc
が有効でないときに最初のmain
が終了せず、2番目が終了する理由を理解しようとしています。説明からhere main
はちょうど未評価のサンクであり、executing
はデータ構造を構築しています。私はここで同じ原則を適用しようとしているし、最初のメインが終了しない理由を参照しようとしています。誰かが私にこの部分を理解させるのを手伝ってもらえれば、これを理解するための指針を私に与えることができます。これとは別に、GHCIはこれをTCOとして認識できないのはなぜですか? does notは定義に適合していますか?ハスケル:TCOとレイジー評価
main = loop
where
loop = do
c <- getChar
case valid c of
Nothing -> return()
Just b -> print b
print c
loop
> main :: IO()
> main = loop
> where
> loop = do
> c <- getChar
> case validate c of
> Nothing -> return()
> Just b -> do
> print b
> loop
ありがとうございます。
['return'](http://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad-Instances.html#v:return)は単なるライブラリ関数であり、手続き型言語の 'return'キーワードとはかなり違って動作しますか? – leftaroundabout
@leftaroundabout:「POST」を押していて、すぐにこのコメントを見たとき、これについての「何か」が正しくないことに気づいた。ありがとう。 – user3169543
答えを受け入れる以外の質問を「閉じる」方法はありませんか?もしそうなら、私はいつか答えを受け入れることができるまで待つ必要があります。 stackoverflowのドキュメントを読んでいます。今のところ、私は受け入れるために7分以上待っています:-)。 – user3169543