届いた。全体に去年のLL Saturdayの雰囲気を活字でよく再現している。 行かなかった(行けなかった)人も、これを読めば大丈夫。 追加されている記事もあるので、行った人も楽しめると思う。
私の原稿は3本。
Lightweight Language Magazineに寄せて
Larry Wall(Perl), Guido van Rossum(Python), Zeev Surasuki(PHP), そして私(Ruby)、 という言語デザイナーによる献辞。 なんて豪華な。注目点は実はそれぞれの写真だったりするかも。
Lightweight Languageとは?
LLの定義について。Matz流「俺定義」が炸裂します。
Language Update
Rubyの最近と将来について。他の言語に比べておとなしすぎるかなあ。
LLMで思い出したけど、Pythonに最近加わった。 List Comprehension(p.136)って記法としてはあんまり嬉しい気がしないんだけど。 いっそ、Haskellのみたいにすれば良かったのに。 Pythonが記号的な表現を嫌うのはわかるけど、 もっとコンパクトな記法の方が元々のPythonの性格に合っているのではないかと(そのためにblock by indentationとか導入したんだと思うし)。 まあ、言語の性格はだんだん変わるものではあるけどな。
Python版:
def qsort(list): if not list: return [] x, xs = list[0], list[1:] return qsort([y for y in xs if y < x]) + [x] +\ qsort([y for y in xs if y >= x])
Haskel版:
qsort [] = [] qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_ge_x where elts_lt_x = [y | y <- xs, y < x] elts_ge_x = [y | y <- xs, y >= x]
Rubyには要らないと思う。Enumerableとブロックの組み合わせが十分強力だから。
def qsort(list) if list.size == 0 return [] end x, *xs = *list elts_lt_x, elts_ge_x = xs.partition{|y| y < x} qsort(elts_lt_x) + [x] + qsort(elts_ge_x) end
ちゅーか、ブロックのパワーに比べたらList Comprehensionは中途半端。 Pythonにもlambdaがあるからいくらでも似たようなことができるはずなのに。 Guidoはlambdaは好きじゃないらしい。