[過去ログ] 関数型プログラミング言語Haskell Part4 (1001レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
914(3): 2006/05/23(火)16:12 AAS
最近、代入を多用した他の言語で書かれたプログラムと同じ動作をするものをHaskellで書きました。それでStateモナドの使い方が分からないので無限ストリームを使ってみたのですが、無限ストリームは分かりづらいからStateモナド使えと言われました。
無限ストリームを使うよりもStateモナドを使った方がHaskellらしいのでしょうか?
教えて下さい。
919: 2006/05/23(火)19:11 AAS
>>914
その辺は好みじゃないかなぁ。
具体的なものを見てみないとわからないけど。
あえて言うなら、将来他のモナドと組み合せて使うならモナドで書いておいた方が良いかもしれない。
926: 2006/05/23(火)21:27 AAS
>処理の全体を表す関数がどんな型を持っているかは,わりとどうでもいいと思う.
これには同意するけど、nextStateはいま問題になっている「処理の全体を表す関数」じゃない。
>>914は「処理の全体を表す関数」をストリームで書くかStateモナドで書くかという問題を提起していて、
それに対して>>917で、nextStateを用意して、それを使って「処理の全体を表す関数」を書いたらいいんじゃないか、と提案した。
この方針が採用されたとして、nextStateの実装にStateモナドを使うかどうかは、また別の話だろ。
929: 2006/05/23(火)23:06 AAS
自分(>>914)から話題をふっておきながら,返事が遅れてしまい申し訳ありません。
私が疑問に思ったのは以下のようなことです.
スタックやレジスタを持つVMがいくつかの関数から参照されているとき,
そのVMの中のレジスタだけを変化させて他の関数にその変化を反映させた
い時,Haskellではそれをどのように解決するのかが疑問に思いました。
これはStateモナドを使えば可能ということでしょうか?
Haskellで代入のような状態変化を表現するのに私は無限ストリームを使う方法しか知らなく,他にもっと良い方法があるのか疑問に思ったので質問しました.
省1
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.043s