Smalltalk

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 を使うと..…

Scheme のクロージャとアクター理論のアクター

h003149b さん(?)の「SchemeとActor理論」 http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/actor/actor.html こうして改めてアクターによるプログラミングを見ると、そこで要求されるメンタルモデルが Smalltalk-72 のそれとそっくりであることに驚かさ…

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 システムの機能を拡…

Little Smalltalk v.1

前のエントリーでマニアックなハックとともに(^_^;)ご紹介させていただいた Little Smalltalk は v.3 で、比較的新しいものです(エントリー名を変更しました)。そのため、仕様が書籍で解説されているのとだいぶ異なります。タイトルから郷愁にかられてアク…

Little Smalltalk v.3

前のエントリーで まつもとさんにコメントをいただいたのをきっかけにして、Little Smalltalk で遊んでみたので、そのメモ。 Little Smalltalk はティモシー・バッドによる、名前のとおり非常に小さな Smalltalk 処理系です。Smalltalk システムの特徴であり…

インスタンス変数のオーバーロード

Matz にっきに、 多重継承のある言語としてRubyを見ると インスタンス変数が全クラス階層で共有される privateメソッドとpublicメソッドの名前空間が同じ という二点はかなり痛い。 前者は継承に参加する全クラス(モジュール)間で名称に衝突があってはいけな…

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 が(限定的にせよ)最適化が効いてむっちゃ速くなる!というお話。(追記:以降、ネタにマジレ…

Squeak に英文を読ませる

ひ日誌の「 Mac に英文を読ませる」に触発されて。 エディタとして常用する Emacs に読み上げ機能を付加する便利さや、任意のキーで選択テキストを読み上げてくれる機能が用意されている OS X にはとうていかなわないまでも、クリップボードのテキストを声に…

カーリーブレイス記法による多重代入もどきを復活させる

Squeak の Smalltalk におけるカーリーブレイス(中括弧)を使った記述は、前身である Apple Smalltalk 時代にラリー・テスラーの手により組み込まれた、配列の特殊な表記法を受け継いだものです。 参考:Squeak のコード中によく中括弧を見かけるけど、あり…

Lua のコルーチンをシミュレート 2

id:sumim:20060209:p1 に call/cc 版を追記。

call/cc でコルーチンっぽいことをする

call/cc …というか継続(a Continuation)が使えるようになったので「 Scheme 入門 16. 継続」の最後の項「 4.3. コルーチン」にある、call/cc を用いたコルーチンもどきの例を試してみる。 まず手始めに、スレッドで同じことを記述。 | rstream | rstream :…

Squeak の Smalltalk で call/cc を使えるようにする

Squeak システムのインストール(念のため) http://squeakland.jp/developer/ の指示に従ってセットアップ ・http://squeakland.jp/developer/download/image/SqueakPlugin-dev-527.zip を入手、展開 ・使用している OS 向けの仮想マシン(バーチャルマシン…

Lua のコルーチンをシミュレート

TMUG(東京マッキントッシュユーザーズグループ)のメーリングリストで Apple の Aperture への言及にからめて引き合いに出された Adobe の Lightroom について、そこで引用されていた Sooey の「Adobe Lightroom には Lua が使われている」によれば、 Adobe…

suzuki さんの OOP 入門に新項目追加

トーフサロン な suzuki さんの「Squeakによるオブジェクト指向プログラミング入門」に、新ページ「クラスの定義」が追加されました。この次の Squeak システムならではの開発方法…というのも楽しみです。