関数型プログラミング言語Haskell Part34 (667レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
640(1): デフォルトの名無しさん [sage] 2025/01/10(金) 18:54:00.90 ID:X+hiLHcK(1/5) AAS
>>638
>アクションを実行し、副作用が起こる前なので当然だ、という解釈は誤っているでしょうか
?なんか混乱しているんじゃないか。
アクションの生成時点でのHaskellコードの参照透明性と、オブジェクトコード実行の際の参照の処理は別物だぞ。
641(1): デフォルトの名無しさん [sage] 2025/01/10(金) 18:59:59.95 ID:X+hiLHcK(2/5) AAS
補足:
Haskellコンパイルは少なくとも次の二つの段階を持つ
1.アクションの生成(入出力指示書の生成、Haskellコードの字面のコンパイル)
2.アクションの実行
1.のアクションの生成時に参照透明性がHaskellコードとして保証されている。
アクションの生成で必要な参照行為は全て終わっているので、2.では入出力だろうが破壊的操作だろうがやっても文句を言われない。
IOの機構がすごいのは1.アクションの生成計算で参照透明性が保証されているというところがうれしいところ、だという話。
645: デフォルトの名無しさん [sage] 2025/01/10(金) 20:01:13.00 ID:X+hiLHcK(3/5) AAS
>>643-644
そのように理解しています。って本当に理解してるか?
アクションの生成において生成しているのは入出力の指示書みたいなもので入出力自体はない。
こういう入力があったらこういう計算方法でこういう出力をするみたいな手順を生成しているだけ。
なんで参照透明性が担保されているというところでそんな引っかかるんだ?
647: デフォルトの名無しさん [sage] 2025/01/10(金) 20:42:16.47 ID:X+hiLHcK(4/5) AAS
同一のプログラムを入力とすればってどういう意味?
前も言ったようにアクションの生成とアクションの実行は別フェーズ。同一のアクションが出力される、というのはどっちのフェーズでのことを言ってんの?
649(1): デフォルトの名無しさん [sage] 2025/01/10(金) 21:34:10.26 ID:X+hiLHcK(5/5) AAS
なんか理解しているのかすごい怪しいなぁ。
一応回答しておくと、アクションの生成のフェーズなら参照透明性を保証された純粋関数の計算でしかないから
main文が同じなら当然同じアクションが生成される。
同じプログラムなら生成されるものも同じという意味で。
理解してたらこんな話出てこないと思うんだけど。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.327s*