iolanguage

ioでデザインパターン stateパターン編

「編」とか言って、続くかどうかわからないけどねー。iolanguageは複数のプロトタイプオブジェクトを管理することによって、多重継承を実現しています。また、プロトタイプオブジェクトは追加したり削除したりできます。ということで、Stateパターンが簡単に…

オブジェクトのslotSummaryを呼ぶと落ちる件

以下のコードを「doFile("hoge.io")」で実行したあと、何でもいいのでオブジェクトのslotSummaryを呼ぶと、落ちる。バージョンが古い(20080107)ので、後で新しいもので試そう。 Model := Object clone do( connect := method(db, appendProto(db connection)…

GCのせい?

“Lisp as an Alternative to Java”のお題を Squeak Smalltalk で - Smalltalkのtは小文字ですに習ってioで挑戦中なんだけど、どうも挙動が…。方針としては、マッピングに列挙された文字オブジェクトそのものに、対応する数値を入れた"asDigit"スロットを追加…

Io スタイルガイド

http://en.wikibooks.org/wiki/Io_Programming/Io_Style_Guideの和訳です。 Io スタイルガイドこのページでは、良いIoコードを書くためのガイドラインを示しています。貴方の知識を寄稿してください。ただし、読者が参照しやすいよう、大項目はアルファベッ…

1 to(5)

Rangeアドオンが上手く動かないのか、"1 to(5)"が動かない。 セットアップ、もう少し親切なら助かるのに…(他力本願)

憂鬱な勇者 in ioLanguage

憂鬱な勇者というものがあるらしいので、ioLanguageで作ってみた。 参考:http://d.hatena.ne.jp/hrkt0115311/20080527/1211891558、憂鬱な勇者とは - はてなキーワード MelancholicValiant.io utf-8に変換して、保存してください。 こちらの乱暴な環境では…

Sequenceとは

http://iolanguage.com/scm/git/checkout/Io/docs/IoGuide.html#Sequence勝手に和訳プロジェクト、まだまだ行きます。 Sequence Ioでは、Symbolと呼ぶ不変Sequenceと、BufferやStringと同等な可変Sequenceがあります。文字列(ソースコード内で""で囲まれた…

やっぱりよく落ちる

a := method(a) a 落ちてしまいます。

カウンターで練習してみる

動かない C.ioとして、下記ファイルを保存。 C := Object clone do ( n := 1 count := method(n := n + 1) asString := n asString ) c := C clone コマンドラインから使ってみる。 Io> doFile("C.io") ==> 1 Io> c ==> 1 Io> c count ==> 2 Io> c ==> 1 Io>…

プリミティブとは

http://iolanguage.com/scm/git/checkout/Io/docs/IoGuide.html#Primitivesの勝手に和訳プロジェクト進行中。 プリミティブ プリミティブはIoの組込みオブジェクトで、主にCで実装され、幾つか隠蔽データを持っています。例えば、Numberプリミティブは倍制度…

typeスロット

ioでObjectのクローンを作成するとき、先頭が大文字の場合、typeスロットに自身の名前が入るよう。クラスは大文字で始める慣例を受け継いだんだろね。 Io> Hoge := Object clone ==> Hoge_0x542cd8: type = "Hoge" Io> HOGE := Object clone ==> HOGE_0x5649…

深さ優先

Pythonの多重継承の説明によると、 depth-first = 深さ優先 breath-first = 幅優先 とのこと。継承とは(修正) - @katzchang.contextsと多重継承とは(修正) - @katzchang.contextsを少し修正。やっと意味がわかった。

Addonコンパイル…

上手くいかない…。Socketがコンパイルできない。 cygwinとosx両方でやってみたけど、SGMLライブラリが足りないとか、よくわからん。 cygwinでは、iovm自体も一部ソース修正でようやくコンパイルできた。 こういうの、全く素人だからなぁ。経験、経験。

ブロックとは

http://iolanguage.com/scm/git/checkout/Io/docs/IoGuide.html#Objects-Blocksより。 ブロック ブロックは変数のスコープの違いを除いて、メソッドと同じです。つまり変数検査は、ブロックが実行されるメッセージのターゲットの代わりに、ブロックが生成さ…

オブジェクトとは

オブジェクト In all other languages we've considered [Fortran, Algol60, Lisp, APL, Cobol, Pascal], a program consists of passive data-objects on the one hand and the executable program that manipulates these passive objects on the other. O…

fib

fib := method(n, if(n==0, 0, if(n==1, 1, fib(n-1) + fib(n-2)))) とりあえず、メモ的に。

継承とは(修正)

継承 When an object receives a message it looks for a matching slot, if not found, the lookup continues depth first recursively in its protos. Lookup loops are detected (at runtime) and avoided. If the matching slot contains an activatable…

多重継承とは(修正)

多重継承 You can add any number of protos to an object's protos list. When responding to a message, the lookup mechanism does a depth first search of the proto chain. Io プログラミングガイド - オブジェクト - 多重継承 多重継承 あるオブジェ…

JavaでIoの構造っぽいものを(超簡単に)書いてみる

超簡単に、ですよ。循環継承はループから抜け出せませんので。オブジェクトには、slotマップとprotosリストがあって、slotでそのオブジェクトが独自に持つデータを管理し、protosでそのオブジェクトの親オブジェクトを管理する。slotが呼ばれた場合、自分のs…

プロトタイプとは

自分用和訳したので、ココにメモ。 プロトタイプ In Io, everything is an object (including the locals storage of a block and the namespace itself) and all actions are messages (including assignment). Objects are composed of a list of key/valu…