Hatena::Grouphaskell

haskell の学習 by codo RSSフィード


『ふつうのHaskellプログラミング』をテキストに、Haskellを学んでいます。

2007-05-21

変数の定義 09:52 変数の定義 - haskell の学習 by codo を含むブックマーク はてなブックマーク - 変数の定義 - haskell の学習 by codo

第2章第2項...

まず、「main = ...」は変数mainの定義です。イコールの左の「main」が変数名で、右の「putStrLn "Hello, World!"」がその値です。

とありますが、ふつう、これって定義というか、変数初期化ですよね。ところがhaskellでは値の再代入ができないので、これを定義というようです。でも再代入ができないなら、変数というより定数といったほうがよいのではないか? う~む。

変数mainの値が関数ではないことに注意してください。では何かというと、これはアクション(action)なのです。アクションHaskellの値ですが、不思議なことに、その値を評価すると入出力などが実行されます。

ここ、なにがなんだかちっともわかりません。

ただ、いままで読んだところでは、変数の値には、

がありえるようです。

まだ読んではいないんですが、62ページの「値としての関数」というところに、

実は、Haskell関数を定義するとは、こういうことです。つまり、関数名はすべて変数であって、その変数関数に束縛されているのです。

頭がごちゃごちゃしてきます。でも、「値としての関数」という言葉、なんかもうちょっとでわかりそうな気がして、悩んでいたら、id:m_konishi1981:20061024 さんの記事を読んで開眼!

関数や、変数は(変数引数のない関数だと私は思っているが)

変数と説明には書いてあるけど、ようは

a = 3

というのは、常に3を返す関数を定義しているわけであって

aという箱に3という値が入っているという、CやJavaなんかの変数とは違うという事に気がつきました。

たしかに、値を返すものを関数と呼ぶならば...

あ!

3を評価すると、3って返ってくるのでは!!

評価する対象に名前をつけてるだけなんだ。

で、こんな感じにまとめてみました。

  • 評価する対象」に名前をつけようとつけまいと勝手ですが、その評価された対象はかならず値を返します。
  • 評価の対象に基本的な型(整数値、文字、文字列、真偽値、○○のリスト)ならそのまま返します。(もしこれに名前をつけるなら、変数となります)
  • 評価の対象が関数なら、与えられた値に関数適用して値を返します。(もしこれに名前をつけるなら、与えられる値を仮引数とします)
  • 評価の対象がアクションなら。どうなるんでしょう...これはまだわかりませんm(_ _)m

CamiCami2012/01/06 12:23I'm out of league here. Too much brain power on dspilay!

wdfwjbasbwdfwjbasb2012/01/06 19:06Mc4Egc <a href="http://yhxozsgqumiv.com/">yhxozsgqumiv</a>

godmkkiypazgodmkkiypaz2012/01/09 23:38Uqzw8k <a href="http://ohmypzhyphqs.com/">ohmypzhyphqs</a>

prgnplsmbobprgnplsmbob2012/01/11 04:36mnBLIr , [url=http://bljmfmfrvxfu.com/]bljmfmfrvxfu[/url], [link=http://cmrclzzegoxg.com/]cmrclzzegoxg[/link], http://ucrrirxzzutz.com/

トラックバック - http://haskell.g.hatena.ne.jp/codo/20070521