[過去ログ]
関数型プログラミング言語Haskell Part4 (1001レス)
関数型プログラミング言語Haskell Part4 http://echo.5ch.net/test/read.cgi/tech/1140717775/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
854: デフォルトの名無しさん [sage] 2006/05/17(水) 21:59:11 すまん、よくレスよんでなかった・・・ http://echo.5ch.net/test/read.cgi/tech/1140717775/854
855: デフォルトの名無しさん [sage] 2006/05/17(水) 22:39:30 ライブドア社員キター? http://echo.5ch.net/test/read.cgi/tech/1140717775/855
856: 848 [sage] 2006/05/17(水) 23:14:44 >>850 ども。runhaskell Setup.lhs configureでConfigがないよと怒られるのは 「ちゃんとCabalされていれば、」の前提が満たされてないのだろうと理解。 Gentooのportageで突っ込んでるだけなので問題点を解決できるまでには遠そうです。 Config.hsを欲しがってるらしいけど、どこから持ってくればよいものやら。 http://echo.5ch.net/test/read.cgi/tech/1140717775/856
857: デフォルトの名無しさん [] 2006/05/19(金) 01:46:10 hugsでChurch数の計算をやろうとしてみた。 two f x = f (f x) three f x = f (f (f x)) dec n f x = n (g h->h (g f)) (_->x) (i->i) sub a b = b dec a と定義して、sub three twoを評価させると以下のエラー Main> sub three two ERROR - Type error in application *** Expression : sub three two *** Term : two *** Type : ((a -> e -> g) -> a -> e -> g) -> (a -> e -> g) -> a -> e -> g *** Does not match : ((((a -> b) -&
gt; (b -> c) -> c) -> (d -> e) -> (f -> f) -> g) -> a -> e -> g) -> (a -> e -> g) -> a -> e -> g *** Because : unification would give infinite type OCamlではこんな感じで対策してるけど、 http://ocaml.jp/archive/document/church.html Haskellではどうすればいいんだろ? http://echo.5ch.net/test/read.cgi/tech/1140717775/857
858: デフォルトの名無しさん [sage] 2006/05/19(金) 03:03:39 >>857 http://users.info.unicaen.fr/~karczma/Essays/church.html http://echo.5ch.net/test/read.cgi/tech/1140717775/858
859: 858 [sage] 2006/05/19(金) 03:23:04 ↑に載ってるdecはタプルを使ってるので、857のdecで定義する場合は dec (Ch n) = Ch (\f x -> n (\ g h->h (g f)) (\ _->x) id) でOK Main> sh $ sub three two 1 http://echo.5ch.net/test/read.cgi/tech/1140717775/859
860: デフォルトの名無しさん [sage] 2006/05/19(金) 04:18:25 >>779 http://www.cbook24.com/bm_detail.asp?sku=4797336021 こっちでは6月1日発売になっております。 http://echo.5ch.net/test/read.cgi/tech/1140717775/860
861: デフォルトの名無しさん [sage] 2006/05/19(金) 18:58:44 >>860 配本が31日、発売が1日ということのようです。 もうすぐですね。 http://echo.5ch.net/test/read.cgi/tech/1140717775/861
862: デフォルトの名無しさん [sage] 2006/05/19(金) 20:13:06 はじめてのC ふつうのH http://echo.5ch.net/test/read.cgi/tech/1140717775/862
863: デフォルトの名無しさん [sage] 2006/05/19(金) 21:23:55 自分のセックスに自信がない奴が買いそうなタイトルだな。ふつうのH http://echo.5ch.net/test/read.cgi/tech/1140717775/863
864: デフォルトの名無しさん [sage] 2006/05/19(金) 21:39:12 ふつうじゃないHが溢れる世の中にふつうって何だよって気になったりするのかね http://echo.5ch.net/test/read.cgi/tech/1140717775/864
865: デフォルトの名無しさん [sage] 2006/05/20(土) 09:25:45 WinHugs May 2006、アンインストールできない。エラーで落ちる。 新手の嫌がらせか? http://echo.5ch.net/test/read.cgi/tech/1140717775/865
866: デフォルトの名無しさん [sage] 2006/05/20(土) 12:18:12 Haskell教に感染したので状態の変更はできなくなりました。 http://echo.5ch.net/test/read.cgi/tech/1140717775/866
867: デフォルトの名無しさん [sage] 2006/05/20(土) 12:57:49 hugsはもうつかわねー http://echo.5ch.net/test/read.cgi/tech/1140717775/867
868: デフォルトの名無しさん [] 2006/05/20(土) 13:21:46 ももももう待てない>< http://echo.5ch.net/test/read.cgi/tech/1140717775/868
869: デフォルトの名無しさん [] 2006/05/20(土) 22:53:18 なんでHaskell微妙にブームなの? http://echo.5ch.net/test/read.cgi/tech/1140717775/869
870: デフォルトの名無しさん [sage] 2006/05/20(土) 23:16:39 裏で手を引いてる奴がいるんだよ http://echo.5ch.net/test/read.cgi/tech/1140717775/870
871: sage [] 2006/05/20(土) 23:24:27 >>869 私見レスだけど, 「純粋関数型」という小難しさがギークを自認する人々を惹き付けるのだと思う。 昔はC++がその役割を果たしていたのだけど(自分を含め踊らされた人の何と多い事か)。 # .NETやJavaがある今,わざわざMFCの為にC++を覚えようと言う人間も少ないし, # C++の「正しい」コーディング法だとかも固まって来た感がある。 逆にOCaml本が出ないのは,call by valueなのである程度動きの予測がつくからかな? 実用性からいえばOCamlのほうが断然分があると思うのだけど。 http://echo.5
ch.net/test/read.cgi/tech/1140717775/871
872: 871 [sage] 2006/05/20(土) 23:25:34 sage失敗…逝ってきます http://echo.5ch.net/test/read.cgi/tech/1140717775/872
873: デフォルトの名無しさん [sage] 2006/05/20(土) 23:29:06 >>872 これからはsageさんと呼ばせてもらうよ http://echo.5ch.net/test/read.cgi/tech/1140717775/873
874: デフォルトの名無しさん [sage] 2006/05/20(土) 23:30:11 賢者なんだね。 http://echo.5ch.net/test/read.cgi/tech/1140717775/874
875: デフォルトの名無しさん [sage] 2006/05/21(日) 00:14:20 OCaml本もいいが、ページの半分近くがObjectの説明に費やされたら俺は切れる。 http://echo.5ch.net/test/read.cgi/tech/1140717775/875
876: デフォルトの名無しさん [sage] 2006/05/21(日) 07:08:32 MFCてw http://echo.5ch.net/test/read.cgi/tech/1140717775/876
877: デフォルトの名無しさん [sage] 2006/05/21(日) 08:06:14 GHC 6.4.2のWindows版が消えてるけど何か問題あったの? http://echo.5ch.net/test/read.cgi/tech/1140717775/877
878: デフォルトの名無しさん [sage] 2006/05/21(日) 15:27:15 >>871 ># C++の「正しい」コーディング法だとかも固まって来た感がある。 個人的にはかなり異議あり. http://echo.5ch.net/test/read.cgi/tech/1140717775/878
879: デフォルトの名無しさん [sage] 2006/05/21(日) 15:30:53 >>878、>>295によると、 正しさというのも、私にとって正しい、あなたにとって正しくない、その程度の差なのではないでしょうか? http://echo.5ch.net/test/read.cgi/tech/1140717775/879
880: さげ [sage] 2006/05/21(日) 20:37:44 >>878 正しい,というのは違ったかもしれない。 今更ながらC++のコーディング規約に関わる本が沢山出ているなあ,という実感から書きました。 あと>>876のレスに困惑。MFCはオブジェクト指向じゃないとかそういう話がしたいのだろか? C++Builderの方がイイヨーとかWindows系以外にも目を向けろとかそういう話?まあいいか。 http://echo.5ch.net/test/read.cgi/tech/1140717775/880
881: デフォルトの名無しさん [sage] 2006/05/21(日) 20:52:27 モナドの合成をマスターすれば、Haskell をマスターできる。 http://echo.5ch.net/test/read.cgi/tech/1140717775/881
882: デフォルトの名無しさん [sage] 2006/05/21(日) 20:54:05 渋谷の女子高生の間でモナドを合成するのが流行ってるらしい http://echo.5ch.net/test/read.cgi/tech/1140717775/882
883: デフォルトの名無しさん [sage] 2006/05/21(日) 21:28:02 call by valueなλ計算のモデルがco-productとstrong monadで作れることが わかれば、Haskellをマスターできる。 http://echo.5ch.net/test/read.cgi/tech/1140717775/883
884: デフォルトの名無しさん [sage] 2006/05/21(日) 21:44:46 λ....... λ...... λ......... http://echo.5ch.net/test/read.cgi/tech/1140717775/884
885: デフォルトの名無しさん [sage] 2006/05/21(日) 21:45:38 λと入の違いが分かればHaskellをマスターできる http://echo.5ch.net/test/read.cgi/tech/1140717775/885
886: デフォルトの名無しさん [sage] 2006/05/21(日) 22:58:06 >>871 .NETとJavaてw http://echo.5ch.net/test/read.cgi/tech/1140717775/886
887: デフォルトの名無しさん [sage] 2006/05/21(日) 23:14:12 >>886 何を持って笑ってるのかわからんな http://echo.5ch.net/test/read.cgi/tech/1140717775/887
888: デフォルトの名無しさん [sage] 2006/05/22(月) 01:53:22 >>887 え?笑っているように見えた? http://echo.5ch.net/test/read.cgi/tech/1140717775/888
889: デフォルトの名無しさん [sage] 2006/05/22(月) 05:00:13 >>886-888 ここで喧嘩するなよw http://echo.5ch.net/test/read.cgi/tech/1140717775/889
890: デフォルトの名無しさん [] 2006/05/22(月) 06:37:27 OSの書けない言語なんて存在すらしてない http://echo.5ch.net/test/read.cgi/tech/1140717775/890
891: デフォルトの名無しさん [] 2006/05/22(月) 07:21:36 >>889 安易に喧嘩認定し杉 http://echo.5ch.net/test/read.cgi/tech/1140717775/891
892: ? [sage] 2006/05/22(月) 09:08:59 いや,喧嘩でしょー.しつこい>>886とか.煽りで怒りを買っているというか.別にいいけど http://echo.5ch.net/test/read.cgi/tech/1140717775/892
893: デフォルトの名無しさん [] 2006/05/22(月) 09:12:32 誤解招く書き方する奴もよくないけど 炊きつける奴もよくない http://echo.5ch.net/test/read.cgi/tech/1140717775/893
894: デフォルトの名無しさん [sage] 2006/05/22(月) 09:21:03 このスレで煽ろうが喧嘩しようが構わないと思うが、すれ違いな話題は止めてくれ。 http://echo.5ch.net/test/read.cgi/tech/1140717775/894
895: デフォルトの名無しさん [sage] 2006/05/22(月) 09:49:51 遅レスながら>>675-676にワロタ http://echo.5ch.net/test/read.cgi/tech/1140717775/895
896: デフォルトの名無しさん [sage] 2006/05/22(月) 12:04:04 Haskellやってる人の平均的プロフィールってどんな感じ? http://echo.5ch.net/test/read.cgi/tech/1140717775/896
897: デフォルトの名無しさん [sage] 2006/05/22(月) 12:54:30 大学院生が多いと思ってた(というか東大か京大ばかりだと思ってた.私は違うけど でも>>871みたいに他言語使いの例があるなら分からないな http://echo.5ch.net/test/read.cgi/tech/1140717775/897
898: デフォルトの名無しさん [sage] 2006/05/22(月) 13:10:49 東大京大て…一体どんな根拠があってそんな考えに至ったんだよw 無駄にトップクラスの大学挙げてくる辺りが学歴厨くさいな。 http://echo.5ch.net/test/read.cgi/tech/1140717775/898
899: デフォルトの名無しさん [sage] 2006/05/22(月) 13:17:10 自分は、Haskellやろうと思ったけど、HaskellをせずにLispをやり始めた。 ていうかチャイティンの本が面白いんでそうなった。 Haskellの勉強会に出てるのは、良く分からんけど、 学生とか変わった会社員とかと言う感じっぽいな。 http://echo.5ch.net/test/read.cgi/tech/1140717775/899
900: デフォルトの名無しさん [sage] 2006/05/22(月) 13:57:41 >>898 >東大京大て…一体どんな根拠があって う〜ん,根拠かあ.webページとかICFPとか見てて浮かんだ憶測だけど,全くの当て推量ではないです. あと学歴厨って言葉は久しぶりに聞いた.よくそんな言葉を恥ずかしげもなく吐けると思うよ. そんなに気分が悪いの?怒ってるの? http://echo.5ch.net/test/read.cgi/tech/1140717775/900
901: デフォルトの名無しさん [sage] 2006/05/22(月) 14:20:07 学歴コンプレックスって言ってやった方が良かったですか?(笑) http://echo.5ch.net/test/read.cgi/tech/1140717775/901
902: デフォルトの名無しさん [sage] 2006/05/22(月) 14:41:59 はぁー,自分が低脳・低学歴だからって他人を僻むのはみっともないよ. もっと大人になった方がいいんじゃないかな. http://echo.5ch.net/test/read.cgi/tech/1140717775/902
903: デフォルトの名無しさん [sage] 2006/05/22(月) 15:11:30 そこらへんでやめておけ http://echo.5ch.net/test/read.cgi/tech/1140717775/903
904: デフォルトの名無しさん [sage] 2006/05/22(月) 15:17:10 すまんな。俺がどうでも良い質問をしたばっかりに。 http://echo.5ch.net/test/read.cgi/tech/1140717775/904
905: デフォルトの名無しさん [sage] 2006/05/22(月) 15:23:39 いや,むしろおれが悪かった. みんな,ごめん. http://echo.5ch.net/test/read.cgi/tech/1140717775/905
906: デフォルトの名無しさん [sage] 2006/05/22(月) 16:25:30 >>904 お前いい奴だな。 http://echo.5ch.net/test/read.cgi/tech/1140717775/906
907: デフォルトの名無しさん [sage] 2006/05/22(月) 17:34:23 なんて、うそよねん http://echo.5ch.net/test/read.cgi/tech/1140717775/907
908: デフォルトの名無しさん [sage] 2006/05/22(月) 18:12:55 >>895 どこが面白いのかわからない… http://echo.5ch.net/test/read.cgi/tech/1140717775/908
909: デフォルトの名無しさん [sage] 2006/05/22(月) 18:48:59 涼宮ハルヒって何か知らんが、最近興味が出てきたよ。 何とか見ないように我慢してるけど。 http://echo.5ch.net/test/read.cgi/tech/1140717775/909
910: デフォルトの名無しさん [sage] 2006/05/23(火) 03:05:16 いや、ハルヒたらはどうでもいいんだけどね http://echo.5ch.net/test/read.cgi/tech/1140717775/910
911: デフォルトの名無しさん [sage] 2006/05/23(火) 04:19:48 もう片方のハルヒはいいぞ。 http://echo.5ch.net/test/read.cgi/tech/1140717775/911
912: デフォルトの名無しさん [sage] 2006/05/23(火) 07:42:15 Haskell使いは高学歴アニヲタの傾向あり、と http://echo.5ch.net/test/read.cgi/tech/1140717775/912
913: デフォルトの名無しさん [sage] 2006/05/23(火) 08:14:50 Haskellの話題で盛り上がれよ。 http://echo.5ch.net/test/read.cgi/tech/1140717775/913
914: デフォルトの名無しさん [sage] 2006/05/23(火) 16:12:47 最近、代入を多用した他の言語で書かれたプログラムと同じ動作をするものをHaskellで書きました。それでStateモナドの使い方が分からないので無限ストリームを使ってみたのですが、無限ストリームは分かりづらいからStateモナド使えと言われました。 無限ストリームを使うよりもStateモナドを使った方がHaskellらしいのでしょうか? 教えて下さい。 http://echo.5ch.net/test/read.cgi/tech/1140717775/914
915: デフォルトの名無しさん [sage] 2006/05/23(火) 16:35:05 ストリームとStateモナドのどっちを使うか迷うという状況を想像できんのだが。 例えばどんなコード? http://echo.5ch.net/test/read.cgi/tech/1140717775/915
916: デフォルトの名無しさん [sage] 2006/05/23(火) 16:39:04 Haskellで他の言語のVM作っていて、命令が実行される毎にそのVMのレジスタの値を変更するようなコードです。 全てのVMの状態がならんだストリームを作って、ある状態のVMを返すってなコードを作ってました。 http://echo.5ch.net/test/read.cgi/tech/1140717775/916
917: デフォルトの名無しさん [sage] 2006/05/23(火) 17:10:38 そのVMがレジスタの値以外に内部状態を持たないなら、 Stateモナドやストリームを使っても特に嬉しくないんじゃないか? そういう場合は、 nextState :: Code -> RegisterState -> RegisterState みたいな状態更新関数を作るのが自然なような気がする。 役に立たない回答ですまん。 http://echo.5ch.net/test/read.cgi/tech/1140717775/917
918: デフォルトの名無しさん [sage] 2006/05/23(火) 17:13:01 > Stateモナド使えと言われました。 そう言ってくれる人がいることが羨ましい。 http://echo.5ch.net/test/read.cgi/tech/1140717775/918
919: デフォルトの名無しさん [sage] 2006/05/23(火) 19:11:20 >>914 その辺は好みじゃないかなぁ。 具体的なものを見てみないとわからないけど。 あえて言うなら、将来他のモナドと組み合せて使うならモナドで書いておいた方が良いかもしれない。 http://echo.5ch.net/test/read.cgi/tech/1140717775/919
920: デフォルトの名無しさん [sage] 2006/05/23(火) 19:12:29 > そのVMがレジスタの値以外に内部状態を持たないなら〜特に嬉しくない なんで?「レジスタの値以外に内部状態を持たないなら」という前提がよくわからない。 どちらにせよStateモナドはかなり嬉しいと思う。 nextState :: Code -> RegisterState -> RegisterState ... let new = nextState code old in ... と書くより, nextState :: Code -> State RegisterState () として, ... do nextState code とやったほうが明示的に状態を持って回らなくて楽じゃん。 All About
MonadsのState Monadの「動機」が分かりやすい: ttp://www.sampou.org/haskell/a-a-monads/html/statemonad.html#motivation むしろ自分としては > 全てのVMの状態がならんだストリームを作って、ある状態のVMを返すってなコード こっちの書き方が気になる。コード貼って欲しいです。 http://echo.5ch.net/test/read.cgi/tech/1140717775/920
921: デフォルトの名無しさん [sage] 2006/05/23(火) 19:18:58 > 将来他のモナドと組み合せて使うならモナドで書いておいた方が良い これ読んで思ったのだけど,例えばStateなら, nextState :: (MonadState RegisterState m) => Code -> m () みたいに,より一般的に定義するって手があるよね これなら nextState :: Code -> State RegisterState () nextState :: (Monad m) => Code -> StateT RegisterState m () この両方の型が付けられる (←表現あってる?)。 ただ,読みにくくなる(と僕は思う)し,ムキになって一般化するよ
りも, 使いどころは考えないとな,というのがプログラマの印象。 http://echo.5ch.net/test/read.cgi/tech/1140717775/921
922: デフォルトの名無しさん [sage] 2006/05/23(火) 19:21:49 あ,MonadStateは http://www.haskell.org/ghc/docs/latest/html/libraries/mtl/Control-Monad-State.html こっちみてください。でも既にfundepsとか使ってあって,ちょっとわかりにくいか… http://echo.5ch.net/test/read.cgi/tech/1140717775/922
923: デフォルトの名無しさん [sage] 2006/05/23(火) 20:03:15 >>920 >「レジスタの値以外に内部状態を持たないなら」という前提がよくわからない。 ごめん。余り意味のない前提だったから忘れてくれ。 >どちらにせよStateモナドはかなり嬉しいと思う。 >(...) >とやったほうが明示的に状態を持って回らなくて楽じゃん。 それが嬉しいのはRegisterStateを変化させるコードがnextStateの他にあって、そこから nextStateを呼び出したい場合だけじゃないか? nextStateはレジスタの状態を1クロック進めるVMの本体であって、 他にレジ
スタをいじるコードはほとんどないと仮定したんだがどうだろうか。 仮にnextStateをStateモナドから呼び出したいことがあったとしても、 monadicNextState :: Code -> State RegisterState () monadicNextState code = modify (nextState code) みたいに定義しておけばいいので、nextState自体をStateモナドで書く理由にはならないと思う。 …しかし、nextStateの実装にStateモナドを使って嬉しいことは普通にあるような気がしてきた。 複数のレジスタ操作アクションを組み合わせてnextStateを書く場合とか。 http://echo.5ch.net/test/read.cgi
/tech/1140717775/923
924: デフォルトの名無しさん [sage] 2006/05/23(火) 20:59:10 要するに,nextStateにどんな型を持たせるか,というのは, nextStateを使う側がどんな風に呼び出しているか,って事でそ? Code -> State RegisterState () も Code -> RegisterState -> RegisterStateも同型な訳で, どっちでも使いやすいほうでいい.>>923でも良いし,それはここでは別問題な気がする. ここでは「VMを作るけど実装のうえで状態の扱いをどうするか?」という質問なので 「それならStateモナドがいいんじゃね?」という答えはストレートで合ってると
思う. 処理の全体を表す関数がどんな型を持っているかは,わりとどうでもいいと思う.なんでもいいけど http://echo.5ch.net/test/read.cgi/tech/1140717775/924
925: デフォルトの名無しさん [sage] 2006/05/23(火) 21:05:51 s->(a,s)もState s aも同型だろうよ http://echo.5ch.net/test/read.cgi/tech/1140717775/925
926: デフォルトの名無しさん [sage] 2006/05/23(火) 21:27:39 >処理の全体を表す関数がどんな型を持っているかは,わりとどうでもいいと思う. これには同意するけど、nextStateはいま問題になっている「処理の全体を表す関数」じゃない。 >>914は「処理の全体を表す関数」をストリームで書くかStateモナドで書くかという問題を提起していて、 それに対して>>917で、nextStateを用意して、それを使って「処理の全体を表す関数」を書いたらいいんじゃないか、と提案した。 この方針が採用されたとして、nextStateの実装にStateモナド
を使うかどうかは、また別の話だろ。 http://echo.5ch.net/test/read.cgi/tech/1140717775/926
927: デフォルトの名無しさん [sage] 2006/05/23(火) 21:58:09 もういいよ http://echo.5ch.net/test/read.cgi/tech/1140717775/927
928: デフォルトの名無しさん [sage] 2006/05/23(火) 23:02:50 >nextStateの実装にStateモナドを使うかどうかは、また別の話だろ。 その「別の話」が聞きたかったんじゃないのか. だからStateモナドを使えば状態の管理が楽なんだよ,と答えたんじゃないの というか処理の全体って何だよ nextStateだか何だか知らないけど,おまいらどういう文脈を仮定しているのかと http://echo.5ch.net/test/read.cgi/tech/1140717775/928
929: デフォルトの名無しさん [sage] 2006/05/23(火) 23:06:13 自分(>>914)から話題をふっておきながら,返事が遅れてしまい申し訳ありません。 私が疑問に思ったのは以下のようなことです. スタックやレジスタを持つVMがいくつかの関数から参照されているとき, そのVMの中のレジスタだけを変化させて他の関数にその変化を反映させた い時,Haskellではそれをどのように解決するのかが疑問に思いました。 これはStateモナドを使えば可能ということでしょうか? Haskellで代入のような状態変化を表現するのに私は無限
ストリームを使う方法しか知らなく,他にもっと良い方法があるのか疑問に思ったので質問しました. 無限ストリームを使って上記のようなことをできるのであればその方法も教えて頂きたいです. http://echo.5ch.net/test/read.cgi/tech/1140717775/929
930: デフォルトの名無しさん [sage] 2006/05/23(火) 23:07:30 それと私が書いたコードは以下のような感じです(若干略していますが)。 data VM = VM Stack RegisterTable runVM :: VM -> Codes -> VM runVM vm codes = selectUnChangedVM $ generateAllVM vm codes where selectUnChangedVM :: [VM] -> VM selectUnChangedVM (vm1:vm2:vms) | vm1 == vm2 = vm1 | otherwise = selectUnChangedVM (vm2:vm
s) generateAllVM :: VM -> Codes -> [VM] generateAllVM vm codes = iterate (execOne codes) vm execOne :: Codes -> VM -> VM execOne codes vm = newvm where code = selectCode vm codes newvm = execCode code vm やっていることは以下の通りです. (1) 1クロックごとのVMの状態を持つ無限ストリームを生成 (2) その中で次のクロックに移っても状態が変わっていないVMを見付けてそのVMを返す http://echo.5
ch.net/test/read.cgi/tech/1140717775/930
931: デフォルトの名無しさん [sage] 2006/05/23(火) 23:09:22 そんなことより>>883の解説きぼん http://echo.5ch.net/test/read.cgi/tech/1140717775/931
932: デフォルトの名無しさん [sage] 2006/05/23(火) 23:13:35 >>930 止まる,というのを,「VMの状態が変化しないこと」としているのは,どうなんだろう。 普通はhalt命令とか入れるんでわ http://echo.5ch.net/test/read.cgi/tech/1140717775/932
933: デフォルトの名無しさん [sage] 2006/05/23(火) 23:15:30 というか後々副作用を導入する為にStateT IOで書くってのはどうよ http://echo.5ch.net/test/read.cgi/tech/1140717775/933
934: デフォルトの名無しさん [sage] 2006/05/23(火) 23:35:11 data RegisterTable = RegisterTable {r1::Int, r2::Int, pc::Int, sp::Int} updateR1 :: Int -> State RegisterTable () updateR1 v = do old <- get put (old {r1=v}) jump addr = do old <- get put (old {pc=addr}) めんどくさくなってきた…かなり反復気味のコードねコレ。良策求む。 ところでこのまま行って State VM a の a は () 以外に何かありえるのかな? 全部状態更新しかしない (State VM Bool などを使わない) ならState使う意味がない気がする http://echo
.5ch.net/test/read.cgi/tech/1140717775/934
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 67 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s