2008年7月31日木曜日
Objective-Cを勉強開始
SmalltalkっぽいC言語とかよく言われていますが,似ているようで似ていないなと思ってしまいます.
おそらくクロージャがない?
何か落ち着きませんね・・・.
forとwhileしかない?
えー.
Smalltalkっぽく書けるC言語ととらえるべきなのかな.
それにしても「この言語なら書ける」という言語が欲しい.
この夏はSqueak Smalltalk,Ruby,Objective-Cを勉強しないと.
2008年7月30日水曜日
2008年7月29日火曜日
Squeak Smalltalkで順序付き辞書 改良
う〜ん.
まだ僕のレベルだとエレガントには書けないな・・・.
Collection 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
OrderedDictionary methodsFor: 'accessing'
removeKey: key
keys remove: key.
content removeKey: key.
実行すると
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
x removeKey:#one.
x removeKey:#two.
x ==> an OrderedDictionary()
2008年7月7日月曜日
Squeak Smalltalk
Squeak は、Squeak Etoys なのか Squeak Smalltalk なのか区別しましょう
Etoys本がでるのはいいのですが,それがSqueakの全てと誤解されることが多く悲しい限りです.
というか最近人と話していると
Smalltalk > Etoys > Squeak Smalltalk
って感じの知名度のようです.
これは問題ありかなっと思ってしまいます.
Smalltalk by Exampleみたいな本が日本でもでればいいのかな?
青木さんのSmalltalk本がもうじきでますが,新しいSqueak Smalltalk本もでるといいかも.
(梅澤さんのSqueak自由自在はとてもすばらしい本だと思っています)
Smalltalk by Example本を訳したサイトでも作ればいいのか.
まとめサイトを作ってみようかな.(問題は僕のSmalltalkの能力と文書力と英語力.とほほ・・・)
2008年7月5日土曜日
自己適用とHaskell
長かった・・・.
今ならモナドもわかりそう.
がんばるぞ.
ただ,ショックなのはHaskellは自己適用が書けないようだということY-Combinatorを書く方法を考えないと・・・.