タグ

ブックマーク / nobsun.hatenablog.com (3)

  • Haskellに副作用はないのか? - HaHaHa!

    Haskellには副作用はないのか? 議論に微かな違和感があるような気がしたのですが,それが何にたいする違和感かよくわかりませんでした.件の記事を読みかえして,また違和感を感じたので,すこし考えてみることにします. 「副作用」って何のことを言っているの? この手の議論が判りにくくなるのは主たる原因はキーワードが定義が明示されてないことにあると思っています.ここでの議論のキーワードはもちろん,「Haskell」と「副作用」です.件の記事では「Haskellの範囲」については定義が示されていますが,「副作用」については定義が示されていません. 「副作用」=「入出力」なの? 私の頭のなかでは「副作用」というのは,「変数束縛の変更」です.だから,「プログラミング言語に副作用がある」と「プログラミング言語では変数の束縛を変更がある」とは同じことです.「Haskellには変数束縛の変更」はありませんか

    Haskellに副作用はないのか? - HaHaHa!
    taninsw
    taninsw 2009/07/02
    参考までに、手元の岩波情報科学辞典には副作用の説明として「式を評価する過程において、その一部分の計算によって変数の値が変化を受け、そのあとの計算に影響を与えることをいう。」と載っていました
  • 2007-09-15

    プログラムは計算機を前提に書かれるのだから、計算機の構造と動作を理解していることは重要であることは間違いない。プログラムは仕様を満すために書かれるのだから、仕様の形式的記述と検証について理解していることは重要(かもしれない)。 (用語、概念をいいかげんに使っているので絶対に真にうけないこと!!) (マシン語を知らない子ども達 - UEI shi3zの日記とこれに対する反響を読んで書いたものです) あまりにも当たり前過ぎて21世紀に入ってから言葉にしたことはあまりないのですが,当然のことながら,プログラムというのは,Curry-Howardの対応を理解して、初めて「書ける」と言うものです.プログラムが書ける,という状態は「Curry-Howardの対応を理解している」という状態の延長線上にあるべきで,Curry-Howardの対応を理解していないということは,プログラムの仕様を理解していない

    2007-09-15
  • 関数プログラミング - HaHaHa!

    Matzにっき(2007-04-12) 現実世界に「状態」があるのに,プログラミング言語がそれを表現できない(ということは,間接的に表現しなければならない)というのは,私の脳内モデルとプログラムの距離が遠くなって大変つらい. 『私の脳内モデルとプログラムの距離が遠くなって大変つらい.』という部分は理解できる. 『現実世界に「状態」があるのに』というのは,『私の現実世界の脳内モデルに「状態」があるのに』と同じ意味なら,これも理解できるのでこのセンテンスは理解できる.現実世界に「状態」があるわけではなく,現実世界の脳内モデルに「状態」があるのだと思います. 現実世界から副作用のない関数モデルへのマップが脳内でできる(関数脳)状態の人には関数型言語が最適なのだと思う. これはマップができるかどうかではなくて,現実世界の脳内モデルとして関数モデルを持っているなら関数型言語が最適なんだと思う. 実際

    関数プログラミング - HaHaHa!
  • 1