2008年6月25日水曜日

順序付き辞書を一部作成

以前からいっていた順序付きDictionaryを一部作ってみました.
どこを継承すればいいのかわからなかったので,とりあえずObjectクラスの下で作ってみました.

なぜ順序付きSet,Dictionaryがないのか不思議です.
Set系は集合だから順序なんて必要ないということなんでしょうかね・・・.

Object subclass: #OrderedDictionary
instanceVariableNames: 'keys content'
classVariableNames: ''
poolDictionaries: ''
category: 'Ringo-Collection'

OrderedDictionary methodsFor: 'enumerating'
do: aBlock
keys do:[:v | aBlock value:v].

OrderedDictionary methodsFor: 'initialize-release'
initialize
keys := OrderedCollection new.
content := Dictionary new.


OrderedDictionary methodsFor: 'accessing'
at: key
^ content at: key! !

OrderedDictionary methodsFor: 'accessing'
at: key put: value
content at: key put: value.
(keys includes:key) ifFalse:[
keys add: key.
].
^ value.

OrderedDictionary methodsFor: 'accessing'
keys
^ keys

OrderedDictionary methodsFor: 'accessing'
values
| out |
out := WriteStream on: (Array new: keys size).
keys do:[:v |
out nextPut: (content at:v)].
^ out contents





実行すると‥‥‥


x := OrderedDictionary new.
x
x at:#one put:1.
x at:#two put:2.
x values
x do:[:v | Transcript cr;show:v].

==>one
==>two





2008年6月21日土曜日

LeopardでRails

Railsでちょっと試してみたいことがあったので,Railsを導入しようとMacportで入れようとしたら,失敗.

いろいろと調べていたら,LeopardにはRailsはそもそも入っているので思い出しました.
標準のRailsを使用する場合はMacportのRubyの環境は削除しておいた方がよさそうということ.

というのは,WeBrickを立ち上げようとしたら/opt/の方を読み込んでいたので,起動しないという問題がありました.
とりあえず,動かせるので安心です.

2008年6月20日金曜日

GNU Smalltalk と Seaside

いつの間にかGNU SmalltalkでもSeasideが対応しているみたいです.
夏休みにでも使ってみて調子がよければ,使ってみようと思います.

GNU Smalltalk

2008年6月12日木曜日

SqueakのVMについて

最近Squeakについて知りたいと思っていたら,SmalltalkのVM関連の情報がちらほら出ているようです.The Weekly Squeakに紹介されているVMを試したいと思ったのですが,そもそもSqueakのVMのsourceからコンパイルする方法すらわからないことが判明.
Linuxなら簡単にコンパイルできそうですが,Mac版VMを作成するには・・・.

最新のsourceを取得して・・・

svn co http://squeakvm.org/svn/squeak/trunk squeak-svn



readmeがあるようですけどBuild an interpreterのところで,遭難.

とりあえず,コンパイルはあきらめてInterpreter Classでも眺めて勉強していよう.


Qwaq developing new fast Smalltalk VM - The Weekly Squeak


2008年6月4日水曜日

サイト名変更

サイト名を変更しました