OOPL

Squeak4.1に追加されたジェネレーターを使って、掛け合わせると36になる3つの数の組を列挙する

この「三人の子の年齢当てパズル」に絡めて、 【純粋な論理パズルです】A「私の3人 の子供の年齢を当ててみて」B「ヒントは?」A「年齢の積は36」B「もう少しヒントを」A「年齢の和はあなたの年齢と同じ」B「、、、じゃあ1つ質問。 年齢が一番上の子の名前は?…

“漢数字からアラビア数字”を Squeak Smalltalk で

やりたいのは単純で、一〜五十くらいまでで、十一とか三十一とかの表記となる。これを1〜50、11とか31とかに直す。 L'eclat des jours(2010-12-09) | kjToArabic | kjToArabic := [:inString | | inStream outStream | inStream := inString readStream. out…

「逆転したビット列」を Squeak Smalltalk で

任意の整数をビット列に化けさせてストリームで取り出すなんてのは 他の言語も含めてどんな感じになるんだろうか。 ときどきの雑記帖 経由で、 http://ja.doukaku.org/61/ 今回は、どう書く?org の「逆転したビット列 」をF#で書いてみました。 問題は、 32…

Rubyのモジュール機構では、既にincludeしてるモジュールに追加でincludeしても結果が反映されない

いや、既にincludeしてるモジュールに追加でincludeすると、追加が反映されず継承木の構造が期待と違う、という意味です。 Twitter / Yukihiro Matsumoto いぜん次のような記述を見かけたので、てっきり Ruby のモジュールはどこまでもシンボリックなのかと…

同じ年月は同じグループとしてカウントして数を求める例でのコード比較を Squeak Smalltalk でも

各言語共通ロジック条件 同じ年月は同じグループとしてカウントして数を求める 最新の年月を降順でソートする 無理やり1行にまとめず、ある程度の可読性は保つようにする 宣言部分、実装メソッドの定義部分などはカウントせず除外する //---(logic)----で囲…

Perl6 の Role の例を Squeak Smalltalk の Traits で

Perl6でオブジェクト指向を復習中 - 西尾泰和のはてなダイアリー Trait named: #A uses: {} category: 'Category-Name'. Trait named: #B uses: {} category: 'Category-Name' A compile: 'foo ^#A'. B compile: 'bar ^#B'. Object subclass: #Foo uses: A +…

Perlで書かれたプロセス指向の例を Squeak Smalltalk で

16 :デフォルトの名無しさん:2010/10/11(月) 19:46:50 これがプロセス指向らしい・・・ sub neko { my $q = shift or die $!; return threads->new(sub { my $namae = ''; while (1) { my $message = $q->dequeue(); if ($$message{command} eq 'namae') {…

スクリプト言語間における「lexical closure」の違い ― Squeak Smalltalkの場合

スクリプト言語間における「lexical closure」の違い - karasuyamatenguの日記 Squeak4.1 では、ようやくブロックがクロージャーで実装されるようになったので、Scheme などと同様にこのようになる。 World findATranscript: nil. (1 to: 5) collect: [:idx …

“斜め方向から fib を高速化する方法”を JavaScript で

SpiderMonkey がタコなのか、はたまた私の JavaScript力がたんに足りないだけなのか、いずれにしてもかなりひどいことになってしまっていますが、JavaScript で許されている範囲で件の Squeak Smalltalk ならではの「斜め」を実現しようとすると、こんなふう…

“最も簡単に fib を高速化する方法”を Squeak Smalltalk で

二つ値を返せば良いんですよ。メモ化なんてしなくていい。def fib_i(n) if n == 1 [1, 1] else x1, x0 = fib_i(n-1) [x1 + x0, x1] end enddef fib(n) fib_i(n)[0] end 最も簡単に fib を高速化する方法 - ドレッシングのような Squeak Smalltalk でも試して…

斜め方向から fib を高速化する方法

id:sumim:20100910:p1 に絡めて、せっかくなら Smalltalk ならではの変わった方法もひとつ…とひねり出してみたのがこちら。 Integer >> fib | temp1 temp2 mine me sender | temp1 := 0. temp2 := 1. self > 1 ifTrue: [(self - 1) fib]. mine := temp1 + te…

Ruby版 Classbox に Local Rebinding機構が欠けていることによって生じる、本家との挙動の違い

id:sumim:20100829:p1 の続き。classbox.diff を当てた trunk のビルドができたので、本家の Classbox のテストコードの振る舞いを、Ruby版に書き直した結果と比べてみました。両者の挙動の違いには、おそらく、発表に対する質問にも出ていた local rebindin…

Classbox のメソッド探索ルール

Ruby会議で飛び出た Ruby 2.0 の予定。目玉に Smalltalk の特に Squeak で初めて実装が試されたゆかりの機能が2つもあって、Squeakファンとしては実にwktkでした。個人的にも、札幌Ruby会議02での こちら も口から出任せにならずに済みそうでよかったな…

括弧ゴルフに Smalltalkで例によって斜め方向から挑戦してみる

http://e-arrows.sakura.ne.jp/2010/08/is-lisp-really-has-too-many-parenthesis.html オーソドックスなものはすでにコメント済み(comment-275)ですが、あらためて趣向を変えて、この手のお題では恒例の“ズル”である、字句解析器(スキャナ)の表の書き換…

Squeak|VisualWorksでバイトコードをディスアセンブル

Ruby|Pythonでバイトコードをディスアセンブル - 西尾泰和のはてなダイアリー Smalltalk(Squeak と VisualWorks)の場合、メソッドオブジェクトに symbolic というメッセージを送ることで得られます。 (Integer compiledMethodAt: #factorial) symbolic 25 …

話題の Big Scripting Languages チートシートの Smalltalk の空欄を埋めてみた [後半]

Big Scripting Languages: PHP, Perl, Python, Ruby, Smalltalk Smalltalk が普通に入っているのがすばらしいので、すこしだけ目立ち気味の空欄を GNU Smalltalk、Squeak、VisualWorks で項目を分けてからざっと調べて分かる範囲で埋めてみた―の巻の後半部分…

話題の Big Scripting Languages チートシートの Smalltalk の空欄を埋めてみた [前半]

Big Scripting Languages: PHP, Perl, Python, Ruby, Smalltalk Smalltalk が普通に入っているのがすばらしいですね。せっかくなので、すこしだけ目立ち気味の空欄を GNU Smalltalk、Squeak、VisualWorks で項目を分けてからざっと調べて分かる範囲で埋めて…

Objective-C の enumerateObjectsUsingBlock: の例を Squeak Smalltalk で

Smalltalkってかなり昔からあるというのは知っています。 といいつつもSmalltalkのことわかってません.... ※^これがでてくるところとか... enumerateObjectsUsingBlockの練習 | プログラマメモ2 何かの参考になれば…と、同じような処理を Squeak Smalltalk …

Cog VM リリース記念: Squeak、Ruby、Python を恒例のフィボナッチベンチで戦わせてみる

Cog VM は、VisualWorks用の超高速 Smalltalk VM を手がけた Eliot Miranda 氏による Squeak Smalltalk 向けの新しい高性能 VM 。Teleplace社(旧 Qwaq社)の製品である同名の仮想空間共有ソフトのベースである Croquet用に開発されたものですが、同社の厚意…

関数オブジェクトから処理内容を取得して書き換える―を Squeak Smalltalk で

ただの言語には興味ありません。この中に「関数オブジェクトから関数の処理内容を取得して書き換えられる言語」「グローバル変数とクロージャを使わずに、呼ぶ度に動作が変わる関数を作れる言語」「標準入出力へのIOが標準では存在しない言語」があったら僕…

Squeak4.1 ではようやくクロージャーがサポートされるらしい

個人的には実験的新機能導入に振り回されるのを嫌って Squeak の最新版を追わなくなって久しいですのですが、その“新機能”のひとつが待望のクロージャーサポートとなれば話は別。RC1 なるベータ版が公開されたようなので、さっそく試してみました。 Squeak4.…

最初に 1000桁に到達するフィボナッチ数は何番目?でベンチマーク

@yukihiro_matz 経由で。 http://www.bestinclass.dk/index.php/2010/02/haskell-ruby-clojure/ おもしろい。やってみよう。…っても、フィボナッチは愚直な再帰縛りでもなければたいした差はでませんから、どう書くかのほうが楽しめますね。^^; ここでは各言…

Smalltalk基礎文法最速マスター(Squeak版)

はてな的プログラミング言語人気ランキング - Life like a clown 流行りには乗っておくのが吉…と思いつつ、なかなか書き進められないので、とりあえず、クラスやメソッド定義より前のごく基礎的な部分について。思いついたときに断わりなく追記・修正するこ…

Schemeコードバトンを Squeak Smalltalk で

コードバトンを無理矢理Smalltalkでフォークするというのはどうだろう Twitter / Takashi SATO Scheme コードバトンまとめページ - higepon blog Gauche版をベースにして、ざっくりと書いてみました。Squeak3.9 と 3.10 の開発者版で動作確認(Win Vista)し…

迷路を最短経路で解く問題を Squeak Smalltalk で

いまさらですが…。 さて試験問題です。 内容は、壁とスペースで構成された迷路が与えられたとき、スタート地点からゴール地点に至る最短経路を求めよ、というものです。 たとえば、S:スタート G:ゴール *:壁 $:解答の経路 としたとき、 ********************…

“10分でコーディング”を Squeak Smalltalk で

10分でコーディング | プログラミングに自信があるやつこい!! 時間は 10分どころか、かなりたっぷり^^;かけてしまいましたが、べつだんトリッキーなこともせずに、ギリギリつぶやくことができる程度の長さのが書けました。w #() as: String が空文字列…

MagLev と Matz Ruby (Ruby1.8)、YARV(Ruby1.9)を戦わせてみる

ついにアルファ版が公開されたようです。 MagLev Ruby VMが公開される、GemStoneの永続化をRubyに maglev/README.rdoc at master · MagLev/maglev · GitHub GemStone/S64(組み込みの OODB 機能を持つ GemStone 社製 Smalltalk 処理系。MagLev と呼ばれる Ru…

Squeak Smalltalk と Ruby のクラス階層をグラフ化

Route 477 - GNU Smalltalkのクラス階層をグラフ化した が面白かったので、参考にして Squeak Smalltalk (Squeak3.10J) と Ruby1.9 (Ruby1.9.1p0) のを作ってみました。 Squeak Smalltalk Ruby Squeak Smalltalk には Traits(ミックスインみたいで、もう少…

“アナグラムを探す”を Squeak Smalltalk で

単語辞書から相互にアナグラムになっている単語を集める. アナグラムとは,(意味のある)単語の文字をならび変えてできた別の(意味のある)単語のこと. 2009-11-10 バッグ(言語によってはマルチセットとも呼ばれる)が使えそうですね。 | words | words := …

“その二乗値が1〜9を過不足なく含む整数の列挙”を Squeak Smalltalk で

2009-11-09 経由で。 2乗した結果に1から9までの数字が1度ずつ現れる整数をすべて挙げよ Haskell再び、簡単なところから - yarbの日記 sort = '123456789' あたりをなんかヒネれないものか 30ナノ秒ほど考えましたが断念しました。^^; (1 to: 987654321 sqrt…