2008年7月5日土曜日
自己適用とHaskell
長かった・・・.
今ならモナドもわかりそう.
がんばるぞ.
ただ,ショックなのはHaskellは自己適用が書けないようだということY-Combinatorを書く方法を考えないと・・・.
2008年6月25日水曜日
順序付き辞書を一部作成
どこを継承すればいいのかわからなかったので,とりあえず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
いろいろと調べていたら,LeopardにはRailsはそもそも入っているので思い出しました.
標準のRailsを使用する場合はMacportのRubyの環境は削除しておいた方がよさそうということ.
というのは,WeBrickを立ち上げようとしたら/opt/の方を読み込んでいたので,起動しないという問題がありました.
とりあえず,動かせるので安心です.
2008年6月20日金曜日
2008年6月12日木曜日
SqueakのVMについて
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年4月7日月曜日
行列
さて,大学院生になりました.
Squeakはもちろん使い続けようと思います.
今年度からコアなところアルゴリズムなどについてSqueakを使って勉強をしたいと思います.
そこでとりあえず数学を行列計算を.
Matrixってクラスが用意されているというのがいいですね.
わかりやすい.
x := Matrix rows:2 columns:2.
x atColumn:1 put:#(1 2).
x atColumn:2 put:#(3 4).
x ==> a Matrix(1 3 2 4)
x := x + x. ==> a Matrix(2 6 4 8)
簡単な計算ができました.