2004-08-01から1ヶ月間の記事一覧

最近のコメント モジュール

…ってないんですね。はてなって、いたれりつくせりなのに、ふと気が付くと意外なものがなかったりするクラスライブラリのようなところがありますね。

もやは OOP ではないけど、Haskell で Loto6

shuffled 版なんて lazy な Haskell にぴったり!とか思ったら、そもそも Random.hs には shuffle なんてなかった…。orz気を取り直して、こんなのを見つけてきました(自分で組めよ…。orz)が、結果が IO [Int] なので、(私の弱っちい Hasckell 力では)細…

Python な…(ry

たまたま手元(OS 9)にむか〜し入れたまま放置されていた処理系があったので、見よう見まねで。 import random source = range(1,48) choice = [] for i in range(1,6): r = random.choice(source) source.remove(r) choice.append(r) print choice

ついでに Cygwin に入っていた Guile で Scheme な Loto6 も

(define(loto6a) (define (rec n series) (if (= n 48) series (begin (if ( (define (loto6b) (define (rec series) (let *1 series) ((memv r series) (rec series)) (else (rec (cons r series)))))) (rec '())) ;; 無駄に call/cc してみた (define call…

せっかく処理系をインストールしたので、Groovy な Loto6

rand=new Random() a=[];6.times{while(a.contains(n=rand.nextInt(48)+1));a.add n};println a

そんな おおしまさんのリクエストにお応えして…

n(LotoN の N)と m(選ぶべき数字の最大)を振ってベンチマークをとってみました。 n = 6, m = ... manually #addIfNotPresent: a Set shuffled 96 => 141.1 148.3 165.5 1769.1 48 => 147.0 150.5 172.3 892.2 24 => 154.9 159.2 177.6 454.8 12 => 178.1…

続・Loto6のような1から48までの数を6個作るスクリプト

気が付かなかったのですが、コメント欄にもいくつかスクリプトが提示されていました。 "まつもとさん版もどき" collection collection := OrderedCollection new. 6 timesRepeat: [ | n | [collection includes: (n := 48 atRandom)] whileTrue. collection …

Loto6のような1から48までの数を6個作るスクリプト

しばりがなければどう書くか、#includes: をどう代替えするか、#includes: を必要としない方針だとどうなるか、とかと考えると単純な問題ながら楽しめそうです。ざっと思いついたところで。 "すなおな手続き的バージョン" collection collection := OrderedC…

MorphicR (PDF)

Matz にっき 経由。Ruby で OpenGL ベースの Morphic システムを実現する話。っても具体的なコード(or コード片)が提示されているわけではなく、既往研究(Squeak Morphic、Ion = Io の Morphic ライクな GUI フレームワーク、AppKit = Cocoa の前身)に…

VisualWorks VM で動く Python、pycore

Matzにっき 経由。なんか複雑…(笑)。 同プロジェクトを進める L. Peter Deutsch 氏は、Interlisp-D、Cedar Mesa、そしてもちろん Smalltalk-80 という知る人ぞ知る PARC システムたちの主要設計者・実装者のひとりで、近年はオープンソース界でもご活躍のよ…

クロージャは Java で言うところのメソッドをひとつしか定義していない無名内部クラス

…というたとえを Groovy の解説などで見かけるのですが、どうもピンときません。クロージャではなくて、プロトタイプベースのオブジェクトは、とかいうなら分かるのですが…。 class inner { public static void main(String[] args]) { System.out.println*1…

Groovy のクロージャは自身を代入した変数を介した再帰呼び出しができない、らしい

…ので、代わりに this を使うのだとか。 factorial = {if (it == 0) {return 1} else {return it * this(it - 1)}} でも、無限倍精度に対応していないらしく、12! 以上は計算できません。orz

ブロックの“ | ”(バーティカルバー)って何よ?

LL Weekend がらみで、Groovy のチュートリアルなどつらつらと眺めているとき、ブロック(クロージャ)の項でふと目にとまったのは、ブロック変数の宣言とコード本体を区別するための“パイプ”の文字。Ruby では Smalltalk のテンポラリ変数よろしく、くくっ…

「オブジェクト指向でなぜつくるのか」 第7章のクイズ

最近話題の同書ですが、あまりに絶賛の嵐なので購入してみました。内容は端的には Java ユーザー向け「憂鬱なプログラマのためのオブジェクト指向開発講座」(の入門編)といった感じでしょうか。たいへん平易に氏の考えるオブジェクト指向が説明されていて…

CLU をデザインするときに、あなたは SIMULA を知っていましたか? プログラムは組みましたか?

OOP

抽象データ型と言えば、バーバラ・リスコフの CLU、ということで、mizu さんのコメントにからめて「History of Programming Languages - II」の「A History of CLU (PDF)」を含む CLU のセッションの章などをつらつらと 読んで 眺めて(^_^;) おりました。残…

LL Weekend 梅澤さんのデモの感想

…が、ぼちぼち Google キャッシュされてきているみたいですね。本家のトラバと重複しますが… とても上手なセッションで感服いたしました。 いろいろ「すげーーー」と思わされる物が多かったです。 プレゼンは梅澤さんのSqueakに度肝を抜かれた。 動きのある…

Smalltalk のクラス

Smalltalk のオブジェクト指向が、「抽象データ型のスーパーセット」としてのオブジェクト指向ではなかったことは、Smalltalk-72 で当初からクラスがメソッドホルダとしてしか位置づけられていなかったことからも明らかです。まあ、いっかんして変数に型がな…

クラス指向

OOP

気付けば再三、ビアルネ・ストラウストラップの「抽象データ型のスーパーセット」としてのオブジェクト指向を簡単にするために「クラス指向」などと言ってしまっていますが、この言い換えには語弊がありそうです。ストラウストラップ本人は、オブジェクト指…

Matz にっきの LL Weekend メモ

…によると、林さんの Squeak/Smalltalk を駆っての nQueen 対戦は、Gauche/Scheme、Ruby、Python というそうそうたるメンバー相手に負けなし? っていうか全戦全勝? でありますか。これで頭の固いペコポン人どもも、その認識を改め、「Smalltalk? 使ってい…