- 関数型プログラミング言語Haskell Part27_©2ch.net
622 :デフォルトの名無しさん[sage]:2015/02/21(土) 13:01:14.43 ID:43YG5tRb - >>613
> だから遅延評価な関数型言語で(命令型言語の)制御構造を表現するには、 > 何らかの工夫(=小細工)が必要になる > >>539 で書いたように、(継続を含む)制御構造は純粋だよ これは、継続(あるいは逐次)が評価順序にセンシティブということであり、 つまりは、継続は純粋ではないということではないの? それとも、「継続は、>>=によって純粋でないことを明示しているので純粋である」 という変な論法? > 純粋でないのは制御構造の対象要素であるI/Oや破壊的代入のような命令の部分 命令の部分が純粋でないのはそのとおりだが > 命令型言語の制御構造は、フローチャートを思い浮かべれば分かるように > ステートマシン(有限状態機械)としてモデル化できる > そして良く知られているようにステートマシンは純粋な関数として表現できる > (純粋な)制御構造と(純粋ではない)命令とをごっちゃにしてはいけない よくわからん説明だな。 命令型言語の制御構造はステートマシンとしてモデル化できるが、 そのステートマシンは純粋でないものの代表だろ? Stateモナドだってあるくらい。 > 良く知られているようにステートマシンは純粋な関数として表現できる これ何のこと言ってる?ホントか?
|
- 関数型プログラミング言語Haskell Part27_©2ch.net
627 :デフォルトの名無しさん[sage]:2015/02/21(土) 15:00:28.18 ID:43YG5tRb - ?純粋でないところがモナドの出番だろ
|
- 関数型プログラミング言語Haskell Part27_©2ch.net
631 :デフォルトの名無しさん[sage]:2015/02/21(土) 18:10:17.50 ID:43YG5tRb - >>628
純粋な関数には、そもそも、評価順序という概念すらないだろ
|
- 関数型プログラミング言語Haskell Part27_©2ch.net
638 :デフォルトの名無しさん[sage]:2015/02/21(土) 21:21:50.24 ID:43YG5tRb - >>630
>仕様を一切変更することなく実装を変更するのは不可能 嘘だろ >>633 いつ評価されるべきかはその関数の仕様に依存する >>634 言語の実装の性質
|
- 関数型プログラミング言語Haskell Part27_©2ch.net
640 :デフォルトの名無しさん[sage]:2015/02/21(土) 21:48:26.24 ID:43YG5tRb - >>637
あなたの副作用の定義を示してくれんか? もしかしてリアルワールドとのインタラクションだけを意味してる?
|
- 関数型プログラミング言語Haskell Part27_©2ch.net
641 :デフォルトの名無しさん[sage]:2015/02/21(土) 21:50:05.66 ID:43YG5tRb - >>639
いま言ってる仕様って書かれてるものだよん
|
- 関数型プログラミング言語Haskell Part27_©2ch.net
643 :デフォルトの名無しさん[sage]:2015/02/21(土) 23:28:29.54 ID:43YG5tRb - >>642
サンクス。それなら俺の理解とあまり違わないとまずは思うね。 俺の場合は、純粋な関数とそれ以外という区別だが。 同じことをあなたは、主作用とそれ以外と言っていると理解した。 ただ、純粋な関数にはもちろん作用なんてないから、根本的に違うのかもしれん
|