Squeak

#overlappingPairsCollect: を使ってパスカルの三角形

巷ではなにやら、風変わりな方法でパスカルの三角形を得るのが流行っているようなので、便乗して id:sumim:20060517#p1 で見つけた #overlappingPairsCollect: を使ってみました。 | results | results := OrderedCollection with: #(1). 10 timesRepeat: [ …

シェパード音階を Squeak の Smalltalk で

rubyco(るびこ)の日記 - Rubyで作る無限音階 経由で、PB memo - [Ruby][音楽]Shepard Tone に、触発されて。マルチメディアなら Squeak!ということでもないのですが(むしろ、マルチメディアはおろか、サウンド関係すらほとんど遊んだことがない…汗)、ま…

二次元配列の要素を縦方向に足す

技術メモ帳 - 二次元配列を列方向に処理 で、まず読み込みは素直にしておいて、得られた配列が、 ary = [[1,2,3],[4,5,6],[7,8,9]]だったとして、さあ、そこからどうするか…というのを考えてみました。Ruby には transpose というのがあるので、これを使うの…

…ect:(Smalltalk ではコロンも忘れないでねw)メソッドたち

なにやら、ここ一両日、コレクションブロックメソッドがらみでアクセスをいただくようになったのは、“るびま”こと、Rubyist Magazine 最新号の Rubyist Hotlinks 【第 14 回】 角谷信太郎さん のコーナーで、なかば恒例となっている map 派、collect 派の話…

メソッドが定義されているクラスを探す

404 Blog Not Found:perl - UNIVERSAL::which 経由で、どのクラスで定義されたメソッドなのか - にぽたん研究所 を読んでいて、Smalltalk でも、あるメソッドを起動できることは分かっているのだけれど、それがどのクラスに定義されているのか分からない…と…

起動すべきメソッドが見つからないメッセージに対処する

id:rubyco さん経由で。小飼さんの 404 Blog Not Found:Perl Monger の質問 - AUTOLOADって他でどうやるの? を受けて。shiro さんがコメント欄で示唆されているように、Smalltalk や、その影響を強く受けている Ruby などではおなじみの手法ですね。 定義(…

メソッド定義にリテラルを含む際の注意

結城浩のSICP日記 - クイズ とそれへの shiro さんのコメントを読んでいて、Squeak や VisualWorks の Smalltalk でも似たようなことがあるな…と思いました。 後述の VisualWorks の場合とは異なり、Squeak の Smalltalk では、リテラルの書き換えも自由に行…

Squeak の Smalltalk での Complex チェック

404 Blog Not Found:%w(Complex Number).reverse を受けて、お呼びでないとは理解しつつも、しかし、どんな振る舞いをするか確認のために。 Float pi " => 3.141592653589793 "Float e " => 2.718281828459045 "Float e raisedTo: (Float pi i) " => エラー …

Croquet SDK 1.0 beta Tips

Croquet で遊んだり、人前でデモをするときに知っておくとうれしい、全画面表示モードへの移行とその解除のための操作、および、関連クラスに定義された #keyStroke: メソッドのコードをつらつらと眺めていて分かったこと(3Dオブジェクトが受け付けるキー…

ガイ・スティールJrが Sun で開発中の新言語は Traits ベース

Derive Your Dreams 経由で。 http://research.sun.com/projects/plrg/fortress0866.pdf Traits are named program constructs that declare sets of methods. They were introduced in the Self programming language, and their semantic properties (and …

インスタンス特異的メソッドを使ったフィボナッチ数列

id:rubyco:20060419:fib のコメント欄にある mobius さんによる、Ruby の特異メソッドを用いたコードが面白かったので、例によって意訳。 | fibonacci | fibonacci := #(1 1). fibonacci assureUniClass. " インスタンス特異的クラスの作成 " fibonacci clas…

f(f(x)) ==> -x な、実数を返す f を定義せよ…クイズ 3

趣を変えて、歪 の PostScript による変態的な手法と大枠で同じ方針による。 Number >> f | method nn | method := thisContext method. nn := method literals size. method literalAt: nn put: ( (method literalAt: nn) == #negated ifTrue: [#yourself] …

f(f(x)) ==> -x な、実数を返す f を定義せよ…クイズ 2

http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-04-18 id:sumim:20060418:p1 の続き。nobsun の Haskell による解答を意訳で。 | ff | ff := [:real | real abs caseOf: { [0] -> [real]. [1] -> [real sign * Float infinity]. [Fl…

f(f(x)) ==> -x な、実数を返す f を定義せよ…クイズ

http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-04-17 | ff | ff := [:xx | xx * 1 i]. ^ #(0.2 -0.2 1.2 -1.2) collect: [:rr | (ff value: (ff value: rr)) real]=> #(-0.2 0.2 -1.2 1.2) 実数を返す関数だからこれじゃダメか…。…

call/cc を使ったコルーチンもどきでフィボナッチ数列

ちまたでは、なにやらフィボナッチ数列が流行っているようなのですが、フィボナッチ数列といえば、以前、Lua について触れたときに、資料で見かけたコルーチンを使ったフィボナッチ数列が印象深かったのに、まだそれを Squeak の Smalltalk で書いていなかっ…

○3つ、△2つ、×1つの目を持つサイコロ2個を振ったときに出る目の組み合わせで一番多いのは…ふんがっ

http://blogs.yahoo.co.jp/takutakutakutaku50/28887753.html 遅レス。 経由で。リンク先の ささださんの inject、sort_by を使った版を直訳ぎみに Squeak の Smalltalk で。 | ss | ((ss := #(○ ○ ○ △ △ ×)) inject: Dictionary new into: [:result :aa | s…

AA 折れ線グラフクイズ 8

http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-03-14http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-03-15オーソドックスな解答例(座標をキーにした連想配列に入れておき、あとでスキャン…)はこちら。 i…

AA 折れ線グラフクイズ 7

いろいろな言語の解答を拝見。 辞書(連想配列)に入れておいて、あとでスキャンする…という、シンプルかつオーソドックスな方法の存在に気づきませなんだ…。orz | series data yy yys | series := 'RCRFCRFFCCRFFRRCRRCCFRFRFF'. data := Dictionary new. y…

AA 折れ線グラフクイズ 5

hirofummy さんの Haskell 版を直訳気味に。なお、Squeak の Smalltalk では、ブロックを再帰できるようにするために ClosureCompiler を必要とします。ClosureCompiler のインストール方法については、id:sumim:20060210:p1 などを参考にしてください。 | b…

AA 折れ線グラフクイズ 4

BiGram で隣接する二文字を抽出する際に用いるのと同じ機構を使った版 | series dict size stream newline lines yy up down | series := 'RCRFCRFFCCRFFRRCRRCCFRFRFF'. dict := {$R -> $/. $F -> $\. $C -> $_} as: Dictionary. size := series size. stre…

AA 折れ線グラフクイズ 3

Shiro さんの Scheme(Gauche)版 (2006/03/14 21:31:12 PST) を直訳気味に(意訳もしまくり)。 | graph | graph := [:input | | input2plist plist drawrow yy | input2plist := [:in | | r0 | r0 := OrderedCollection new. in inject: 1 into: [:y0 :cmd…

AA 折れ線グラフクイズ 2

歪 で die さんが書いておられる PostScript(GhostScript)版を直訳気味に(一部、意訳ありw)。 | グラフ | グラフ := [:入力文字列 | | 列数 行 現在行 変換テーブル 空白行 行移動 現在列 記号 情報 | 列数 := 入力文字列 size. 行 := OrderedCollectio…

AA 折れ線グラフクイズ

http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-03-14http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-03-15 歪 経由で。 an Array2D にマップされた平面へ1文字ずつプロットする版 | series value min max…

Perl6 あなどれじ。クロージャ記述の短さ対決!

id:m-hiyama さん経由で、404 Blog Not Found の「水と油、returnとλ」によると…、 しかし、Perl6はこんなもんじゃありませんよ!Perl6: sub($x){ $x + 1 } # 基本形 -> $x { $x + 1 } # -> を使うと()が不要になる sub{ $^x + 1 } # placeholder を使うと..…

Rails 1.1 の Symbol#to_proc というアイデア

http://wota.jp/ac/?date=20060309#p01遅レス。 経由で。 Ruby のブロック付きメソッド呼び出しメソッドで、ブロックの代わりにシンボル(ただし、& 修飾した…)を渡すことにより同様の効果を得るためのもの。ブロック付きメソッド呼び出し時に & 修飾した引…

rubyco の日記 - コルーチン 2

前のエントリーの続き。 何をいまさら…な感もなくもないですが、Ruby のソースと比べてしまうと、Smalltalk のソース(特にファイルアウトした…)は、プログラムというよりは何かの設定ファイルを見ているようで、じつに読み下しにくく見劣りがしてしまいま…

rubyco の日記 - コルーチン

http://d.hatena.ne.jp/rubyco/20060303/coroutineコルーチンと call/cc の理解を深めるために Squeak の Smalltalk で Ruby から直訳気味に翻訳してみました。 | co | co := Coroutine generatorSymbol: (#generateIntegerStartingAt:resume:) argument: 0.…

入力した式を C に変換後、コンパイルして実行するスクリプト

そういえば Lightweight Language Day and Night 2005 で、どんなテーマにしたらよいかを皆さんが考えてくださったときに、 Masashi Umezawa wrote: > 今回プログラミングを担当されるのは鷲見さんですが、「応用編」に関しては > いろいろな人のアイデアを…

OS X で Squeak VM の外部プラグインのビルド

Little Smalltalk で VM のソースを眺めていたら、むらむら(違)と Squeak VM をビルドしたくなったのですが、初心者にはとうてい無理っぽかったので、外部プラグイン(OS X 向けには ○○.bundle とかいうやつ。仮想マシンレベルで Squeak システムの機能を拡…

Yet Another Ruby VM (YARV) での ack や tarai との速度比較

http://www.namikilab.tuat.ac.jp/~sasada/diary/200602.html#d17 http://eigenclass.org/hiki.rb?yarv+ueber+algorithmical+optimizationなにやら YARV で Ruby が(限定的にせよ)最適化が効いてむっちゃ速くなる!というお話。(追記:以降、ネタにマジレ…