を反復処理するたびに、私は機能を持っていることを言う:この質問の目的のためにハスケル - 別の値を返す関数は、それが
doesAThing :: Int -> ChangeState
それはdoesAThingを取る必要がある唯一のこと、何であるかChangeState特に重要ではありませんIntをパラメータとして使用し、その反復は無限に繰り返されます。
addNum :: [Int] -> Int
addNum [n] = foldl (+) 0 ([n] ++ [n + 1])
とdoesAThingのためにそれを使用します。私は何をしたいか
は、このような機能を取るです。現在のところ、関数はうまく動作しますが、それは私がやりたいことをしません - 常に同じ番号を返します。そのアイデアは、itATを繰り返すたびにaddNumは以前の出力が何であってもaddNumのパラメータとしてそれを使用するということです。私。 :
最初の繰り返し:nが0に設定されているとします。addNumは1(0 + 0 + 1)を返し、doesAThingはそれを使用してChangeStateを変更します。
2回目の反復:addNumはパラメータとして1をとり、3(0 + 1 + 2)を返し、それを使用してChangeStateを変更します。
3回目の繰り返し:addNumはパラメータとして3をとり、7(0 + 3 + 4)を返し、7は、ChangeStateを変更するために7を使用します。
等
謝罪これは本当にnoobish質問であれば、自己教育自分Haskellは時々難しいことができます。
次に、モナドについての章を読みます。 – arrowd
「自分自身でHaskellを教えることは時折困難です」 - それは難しいことではありません。適切なチュートリアルを参照してください!あなたは[推奨書籍](http://stackoverflow.com/tags/haskell/info)をチェックしましたか? – leftaroundabout