トップ «前の日記(2009-10-13) 最新 次の日記(2009-10-15)» 編集

Route 477



2009-10-14

[ruby] (Ruby 1.9の)Hashが順序を保持するのは自然か

という話がありましたが:

Rubyは、ArrayがStackやQueueを含んでいるように、大クラス主義の言語です。 Hashが順序を保持するようになったというよりは、 「HashがOrderedHashを含むようになった」と考えると自然かなぁと思います。

[smalltalk] GNU Smalltalkなら、コマンドラインでSmalltalkを試せる

そんなものがあったのか!ということで、MacPortsで入れてみる。 *1

$ port install gst

gstコマンドで起動。

/Users/yhara/proj/smalltalk % gst
GNU Smalltalk ready

st> 1 + 2
3
st> 

おお、動いてるっぽい。

st> nil
nil

nilがnilなのでニヤリとしてしまう(笑)。

Smalltalkというと環境とセットになってるイメージが強いけど、こうやって言語の方だけ手軽に試せるのはありがたい。

目下気になってるのは、「SmalltalkはRubyとどのくらい違うのか?」という点。 「マクロ」をLispの本質だとすると、LispとRubyはそれなりに離れてるけど、もし「全てがオブジェクト」がSmalltalkの本質ならば、Lispよりも実は近いのかな? などと想像している。

まあとりあえずはチュートリアルですかね。

リンク:

それにしても、構文定義の短さには驚いた。 さすが、ifすらメソッドである言語。

*1 デフォルトだとGTKとかも入るので、時間がかかるのが嫌な人は適宜variantを指定しましょう。

本日のツッコミ(全1件) [ツッコミを入れる]
sumim (2009-10-15 11:47)

お邪魔します。Ruby と Smalltalk の近さは、特に#collect式のようなブロック付きメソッド呼び出し式などで際だつように思います。<br><br>#ruby<br>(1..10).collect{ |n| n*2 }<br>(1..10).map{ |n| n*2 }<br><br>"Smalltalk"<br>(1 to: 10) collect: [:n | n*2 ]<br><br>;;Lisp<br>(mapcar #'(lambda (n) (* n 2)) (loop repeat 10 for i from 1 collect i))