バリケンのRuby日記 RSSフィード

2008-03-31

[] consセル、ドット対、リスト  consセル、ドット対、リスト - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  consセル、ドット対、リスト - バリケンのRuby日記  consセル、ドット対、リスト - バリケンのRuby日記 のブックマークコメント

今日はconsセル、ドット対、リストについて勉強するよ。

consセルとドット対

consセルとは、「値」と「その次のconsセル」という二つの参照を持ったものだよ。そして、consセルをLispで表現するには「ドット対」を使うよ。

「ドット対」は、二つの要素を参照できる表現で、たとえば

(123 . 456)

のように書くよ。最初の要素を取り出すにはcarを、2番目の要素を取り出すにはcdrを使うよ。

[1]> (car '(123 . 456))
123
[2]> (cdr '(123 . 456))
456
[3]>

リスト

さっきの例だとドット対ひとつで二つの要素しか参照できないけど、ドット対をconsセルとして使うことでたくさんの要素を一元的に扱うことができるよ。ドット対でconsセルを表現するには、「値」と「その次のconsセル(つまり次のドット対)」という表現を続けていけばいいよね。だから、

(1 . (2 . (3 . (4 . (5 . ())))))

と書くことで複数の要素を一括して扱えるようになったね。このデータ構造のことを「リスト」って言うみたいだよ。

そして実はこの表現は、Lispでは

(1 2 3 4 5)

と書いたのと同じことになるんだって。実際に評価して試してみよう!

[3]> '(1 . (2 . (3 . (4 . (5 . ())))))
(1 2 3 4 5)
[4]>

ということで、Lispでカッコでくくって複数の要素を列挙していたのは、実はリストだったんだね。だからLispのS式(の関数や特殊形式)は、リストでできているんだねえ。

[][] テクノラティのブログ検索を使ってチベット関連のブログを抜き出す  テクノラティのブログ検索を使ってチベット関連のブログを抜き出す - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  テクノラティのブログ検索を使ってチベット関連のブログを抜き出す - バリケンのRuby日記  テクノラティのブログ検索を使ってチベット関連のブログを抜き出す - バリケンのRuby日記 のブックマークコメント

今回も特に「どうしてそうなるか」の説明はしないよ。

$KCODE = 's'

require 'open-uri'
require 'cgi'
require 'nkf'

require 'rubygems'
require 'hpricot'

search_word = CGI.escape(NKF.nkf('-w', 'チベット'))
uri = URI.parse("http://www.technorati.jp/search/#{search_word}?authority=a4&language=ja")

page = Hpricot.parse(uri.read)

page.search("li.hentry").each do |e|
  puts(NKF.nkf('-s', e.at("h2").inner_text), e.at("a.url")["href"])
end

実行結果だよ。

C:\ruby>ruby tibetblog.rb
Yahoo! アラート: 中国共産党 - Re: ★よう言うわ中共人 やらせ証拠写真
http://blog.livedoor.jp/olympic2008/archives/50971990.html
ピースサイン
http://hurryhurry.blog42.fc2.com/blog-entry-1098.html
隣の大国で起きている事・・・
http://rd.yahoo.co.jp/rss/l/blog/myblog/rss2/item/*http://blogs.yahoo.co.jp/akira062363/55579054.html
「兵士が僧侶変装」ダライ・ラマ、中国関与の可能性示唆
http://rd.yahoo.co.jp/rss/l/blog/myblog/rss2/item/*http://blogs.yahoo.co.jp/akira062363/55578954.html
2008年3月16日 チベット独立戦争勝利祈念! 北京五輪ボイコット!w
http://marpi.blog.so-net.ne.jp/20080316
はじめまして おとなしめるです
http://yukinonanashi.blog23.fc2.com/blog-entry-788.html
そこは、おれの場所だ、甘えん坊さん
http://kashiwataro.iza.ne.jp/blog/entry/528125
野口健氏が見るチベット騒乱と北京五輪参加問題
http://blog.goo.ne.jp/misky730/e/718bb7fc88afafe64e41038f779eebca
アテネで聖火引き渡し式典、厳戒態勢で逮捕者も
http://rd.yahoo.co.jp/rss/l/blog/myblog/rss2/item/*http://blogs.yahoo.co.jp/justice2003tikyuusaisei/31714750.html
ダライ・ラマ「兵士が僧侶に変装」と中国に反論
http://blog.livedoor.jp/yswebsite/archives/51965161.html

C:\ruby>

うーん、ちょっと切り出しがうまくいってないかも。

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20080331