CSS Selector Generator | CSS のセレクタ一覧を一発で自動生成!

03

09月2007年

Haskell入門書以前

tanaka 19:30 PM

  • はてなブックマークに登録
  • livedoorクリップに登録
  • Yahoo!ブックマークに登録
  • deliciousに追加

すいません、長い間個人用セクションを開けっ放しにしておりました、tanakaです。今回からこのコーナーではプログラミング言語Haskellで遊ぶことにします。

ここまで読んで、えっ、(このカテゴリの)P言語ってPHP/Perl/Ruby/Pythonのことを言うんじゃないの?と思われた方がいるかもしれません。

違います。P言語とはPractical Languageのことを言います。 えーっと、結局、なにか今まで触ったことのない言語をいじりたくなっただけです。

ですが、芸は身をHaskellという格言もあるようですし→ProgrammerProverb - MoriMoinなにごともチャレンジということで。

さて、まだ長続きしないかもしれないのに、入門書を買うのは待って、情報収集しましょう。

資料探しはとりあえずこのくらいで、Haskellで遊ぶことにします。WEB+DB PRESS vol.34に小飼弾さんによるHaskell特集があったのでそれをやってみました。

実行系のインストール

% apt-get install ghc

Debianにインストールすると180MBも容量を食うので、注意してください。

まだ情報収集もあまり出来ていませんが、とにかく、コードを書いて実行することにします。

GHCiで遊ぶ

まずは、逐次実行する環境のghciを動かします。

% ghci

計算機的使い方ができます。

Prelude> 3 + 15
18
Prelude> 10 - 43
-33
Prelude> 11 * 44
484
Prelude> 34 / 12
2.8333333333333335
Prelude> 10 ** 4

ifの実装

関数でifが実装できるそうです。以下のコードをエディタで記述して保存します。(よくわからないが、ghciの中では定義できない)

myif.hs

myif True t f = t
myif False t f = f

これは手続き型言語におけるif文の使い方ではありません。(ぱっと見、if文を使っている側のコードに見えますが)myif関数ともいうべきものらしいです。これを保存したら、ghciで読み込んであげます

Prelude> :load myif.hs
[1 of 1] Compiling Main             ( myif.hs, interpreted )
Ok, modules loaded: Main.
*Main>

次に定義したmyifを使ってみます。

*Main> myif (3 > 2) "yes" "no"
"yes"
*Main> myif (1 == 1) "yes" "no"
"yes"
*Main> myif (3 < 2) "yes" "no"
"no"

使い方を見てみると、先ほどのmyifの定義の意味がわかってきた気がします。myifを使ったときの「(3 > 2)」 「"yes"」 「"no"」はすべて関数側に渡されて、そして結果がかえってくると。関数定義の「=」の右側と左側で意味が違うようです。

遅延評価がわかる例

Haskellの特長の一つに、遅延評価というものがあるそうです。haskell - バリケンのHaskell日記 - 遅延評価のまとめを見ると、文字列の替わりに出力(putStrLn x)を渡していました。"then"と"else"が出力されるように書かれていますが、実際に出力されるのはどちらか一方です。myif関数に3つの値が渡されて、値が戻ってきたあとで、出力が評価されているということみたいです。

まとめ

  • Haskellには1行ずつ実行できるシェルがある(ghci,hugsはちょっと使ってみました。)
  • それらはそのままでもちょっとした計算機になる。
  • ifを実装
  • 必要な時まで式(expression)は評価されない=遅延評価
  • やっぱり本を買おうかな

バシャログスタッフによるWebサイト制作サービス

トラックバック

このエントリーのトラックバックURL
http://c-brains.jp/cgi-bin/mt/###/1251
###はmt-tb.cgiに変更してください。

コメントを投稿

ページの先頭へ

POPULAR TAGS
  • バシャログスタッフによるWebサイト制作サービス

ARCHIVE

特集

RECENT COMMENTS

ishida on CSS Nite in Ginza, Vol.49「バシャログ LIVE」 で紹介したDreamweaverの正規表現クエリーを公開します
>市川さん コメントありがとうございます。 前提条件の部分
ichikawa on 1.2.3で整えるPHP開発環境【STEP.1】 XAMPPをインストール
いつもバシャログ。をご覧いただきありがとうございます。 >
市川 on CSS Nite in Ginza, Vol.49「バシャログ LIVE」 で紹介したDreamweaverの正規表現クエリーを公開します
どういう前提での使用例なのか、わかりませんが、 タグを明示的
studio-8ch on 1.2.3で整えるPHP開発環境【STEP.1】 XAMPPをインストール
いつも記事を大変興味深く、拝見いたしております。 是非、A
sakai on [使える CSS テクニック] CSSで実現するプルダウンメニュー
>とらのすけさん コメントありがとうございます。 CSS