Io Language

■ このスレッドは過去ログ倉庫に格納されています
2008/01/24(木) 00:03:44
http://www.iolanguage.com/
http://f21.aaa.livedoor.jp/~kizz/prog/io/_docs/IoProgrammingGuide_ja.html
2008/01/24(木) 07:51:21
なんでそんな伸びそうも無いものを。
>1 にネタ振りが出来ないようなら早晩落ちるぞ。
2008/01/24(木) 12:04:58
言語そのものは知らんが実装はガベコレだけ読んだな。
2008/01/24(木) 13:20:05
ioの構文、メッセージ機構はすごく興味あるんだけど
バインディング機構がヘボいから萌えない…
2008/01/24(木) 22:28:07
特殊形式に見えるものが普通のメソッドだったりするからメタプログラミングとかは結構できそうだな
文法もわりとわかりやすいな
2008/01/25(金) 03:22:30
このインターネッツ時代にわざわざ検索しにくい名前をつけんなと
2008/01/26(土) 17:04:19
>>5
それは良いけど、これはいただけない気が…

Range
v := "before"
f := method(arg, arg)
v println  #=> before
0 to(10) foreach(v, v println) #=> 012345678910
v println #=> 10
2008/01/27(日) 23:15:50
(過去の)関連スレ
{_proto: プロトタイプベース・オブジェクト指向};
http://pc11.2ch.net/test/read.cgi/tech/1109948927/
2008/02/03(日) 10:14:47
>>6
io-language
iolanguage
で検索するよろし
2008/02/03(日) 10:18:52
>>7
Rubyのブロックと同じ問題ですなあ
2008/02/03(日) 10:42:51
v := "before"
が無くても同じ、これは嫌だな
Rubyのは1.9で直ってるんだよね
12デフォルトの名無しさん
垢版 |
2008/02/03(日) 10:57:05
LLパトルロワイヤルスレから来ました

io-languageの話題はここでいいのかな・・・

まあいいや

io-languageでメッセージ?オブジェクトそのものを取り出すにはどうしたらいいんでしょ

Io> unko := Object clone do(puripuri := method("&&&" println))
==> Object_0x581898:
puripuri = method(...)

Io> unko puripuri
&&&
==> &&&
Io> unko puripuri slotSummary
&&&                      ←puripuriが実行されてしまう
==> "&&&":                 ←文字列にslotSummaryしてしまう

上記で、puripuriを取り出したいのですが・・・
2008/02/03(日) 10:57:55
> io-languageの話題はここでいいのかな・・・
>
> まあいいや

コピペ失敗 orz ここは読み飛ばしてください
2008/02/03(日) 11:01:52
unko getSlot("puripuri")
ってこと?
2008/02/03(日) 11:45:22
>>14
それだ!!!!1
ありがとうございました。

文字列で渡すのがなんか新鮮に感じた
2008/02/03(日) 19:40:17
何かよさげな言語の予感
2008/02/03(日) 19:58:23
>>7
v := "before"
f := method(arg, arg)
v println #=> before
Sandbox doSandboxString("Range; 0 to(10) foreach(v, v println)")
v println

スマートとは言い難いけど、Sandboxを使ってとりあえず回避。
187
垢版 |
2008/02/03(日) 20:39:23
>>17
Sandboxなんてあったのか…
あれから考えて、こんな風にやってみた。
うまくいっているようには見える。

scope := method(
expr := call message arguments first
context := Object clone
msg := message(do)
msg setNext(expr)
context prependProto(call sender)
context forward := method( self proto doMessage(call message clone do( setNext(nil) )) )
context doMessage(msg)
)

obj := Object clone
obj l := list(1, 2, 3)
obj f := method( scope( l foreach(v, v println) ))

chk := method( "[obj] " print ; obj slotNames print ; " [v] " print ; Lobby slotNames println )

obj f ; chk
scope( obj l foreach(v, v println) ) ; chk
obj l foreach(v, v println) ; chk

scopeブロック(?)内で self がいる(self l とする)ような仕様で良ければ forward メソッドの設定は省ける。
2008/02/05(火) 02:38:43
↓のみてて思ったんだけど、++とか--みたいな演算子って直接呼べないの?
ttp://blog.xole.net/article.php?id=658

value := 0
value ++ := method(self = self + 1)
value -- := method(self = self - 1)
value ++ println
value -- println

結果はファイルから読み込むと何もでないんだけど、コンソール(?)からやるとなんか出力されるんだよね

> io
Io> value := 0
==> 0
Io> value ++ := method(self = self + 1)
==> method(...)
Io> value ++ println
==> 1
Io> value ++ println
==> 1
Io> value println
==> 0

なんでだろ?
あと、↓のにすると上手く動く。この違いがわからない...orz
value getSlot("++") setScope(value) call println
value getSlot("--") call println
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況