だから私の修正ポイントを見つけることができません、それは49までの整数をインクリメントし、その後、関数は常に50修正ポイント機能は<code>Control.Monad.State</code>、<code>fix :: (a -> a) -> a</code>から、私は<code>modifyValue</code>にこの小さなコードを持って、<code>fix</code>機能を理解するよう
返します私はこのコードを起動したときにimport Control.Monad.State
type StateVal = Int
modifyValue :: StateVal -> StateVal
modifyValue v | v < 50 = v + 1
modifyValue v = 50
simpleStateStep :: State StateVal()
simpleStateStep = do
s <- get
put $ modifyValue s
main = do
putStrLn $ show $ fix modifyValue
はしかし、代わりにシーケンスが50に収束50、で修正点を見出すこと...それは*** Exception: <<loop>>
私が最初のを提供していないので、私は何かを間違えることは明らかであると主張しますシーケンスを開始するための状態、たとえばw ith 1、それは生成するでしょう[2,3,4,..,49,50,50,50,50....]
私は不適切に修正機能を使用していますか? 修正ポイント50を見つけることができるので、何かしますか?
C.F.のようなものが必要になりますhttp://stackoverflow.com/q/4787421/356440 –