http://www.iolanguage.com/
http://f21.aaa.livedoor.jp/~kizz/prog/io/_docs/IoProgrammingGuide_ja.html
Io Language
■ このスレッドは過去ログ倉庫に格納されています
2008/01/24(木) 00:03:44
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 メソッドの設定は省ける。
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
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
2008/02/05(火) 03:07:40
>>19
selfに代入しても、元のが変わらんっぽい
Io> value := 0
==> 0
Io> value test := method(self = "banzai!")
==> method(
self = "banzai!"
)
Io> value test
==> banzai!
Io> value
==> 1
selfに代入しても、元のが変わらんっぽい
Io> value := 0
==> 0
Io> value test := method(self = "banzai!")
==> method(
self = "banzai!"
)
Io> value test
==> banzai!
Io> value
==> 1
217
2008/02/05(火) 03:24:012220
2008/02/05(火) 03:41:13 Io> value := Sequence clone setItemType("float32") setEncoding("number") setSize(1)
==> 0.000000
Io> value ++ := method(self += 1)
==> method(
self += 1
)
Io> value ++
==> 1.000000
Io> value
==> 1.000000
やったー ++ できたよー orz
>>21
そっか、selfも単なるread onlyなスロットだからか・・・
==> 0.000000
Io> value ++ := method(self += 1)
==> method(
self += 1
)
Io> value ++
==> 1.000000
Io> value
==> 1.000000
やったー ++ できたよー orz
>>21
そっか、selfも単なるread onlyなスロットだからか・・・
2320
2008/02/05(火) 04:18:45 Io> value := 0
==> 0
Io> value ++ := method(call sender setSlot("value", self + 1))
==> method(
call sender value := self + 1
)
Io> value ++
==> 1
Io> value
==> 1
先生!receiverの名前を得る方法はないんでしょうか!
どうでもいいけど、referenceがページ分けされてないので検索しずらいです('A`)
http://www.iolanguage.com/scm/git/checkout/Io/docs/IoReference.html
==> 0
Io> value ++ := method(call sender setSlot("value", self + 1))
==> method(
call sender value := self + 1
)
Io> value ++
==> 1
Io> value
==> 1
先生!receiverの名前を得る方法はないんでしょうか!
どうでもいいけど、referenceがページ分けされてないので検索しずらいです('A`)
http://www.iolanguage.com/scm/git/checkout/Io/docs/IoReference.html
247
2008/02/05(火) 04:42:212520
2008/02/05(火) 05:25:05 絶対にスマートにできる方法があるはず!と思ってソース見たら
Number.c の Number のデータ部分に代入しているのが(DATA(self) = しているところ)、
IoNumber_rawClone、IoNumber_newWithDouble_、IoNumber_copyFrom_ くらいしかなくて、
IoNumber_rawClone は、Clone用、
IoNumber_newWithDouble_は、内部のIoState用、
IoNumber_copyFrom_は、組み込まれてないww(たぶん内部用)
オワタ\(^o^)/
Number copyFrom メソッド実装汁!って本家に言っとくか、パッチなげるかだなw
Number.c の Number のデータ部分に代入しているのが(DATA(self) = しているところ)、
IoNumber_rawClone、IoNumber_newWithDouble_、IoNumber_copyFrom_ くらいしかなくて、
IoNumber_rawClone は、Clone用、
IoNumber_newWithDouble_は、内部のIoState用、
IoNumber_copyFrom_は、組み込まれてないww(たぶん内部用)
オワタ\(^o^)/
Number copyFrom メソッド実装汁!って本家に言っとくか、パッチなげるかだなw
2620
2008/02/05(火) 05:26:36 ああ、言い忘れた。一応、IoNumber_readFromStream にもあったから、Stream使ったらいけるかも
2720
2008/02/05(火) 06:14:242008/02/05(火) 13:10:12
チラシの裏です。
Windows版でコンパイルしたくなって四苦八苦してたんですが、
downloadページで配布されている Io-2008-01-20.tar.gz が、
ShellExecuteのための shell32.lib がリンクされてねえとか、setenvがねえとか、
OS依存なエラーでwin32環境でコンパイルできなくて、どうなっとるねん!!1
エラーつぶしているうちに、Changelog 見たらWindows関連部分が Fix されてるっぽくて、
http://www.iolanguage.com/scm/git/checkout/Io/
↑見たら直ってて、俺の時間返せー!!! って感じです・・・ orz
とりあえず、git落として最新版ダウンロードしたお
Windows版でコンパイルしたくなって四苦八苦してたんですが、
downloadページで配布されている Io-2008-01-20.tar.gz が、
ShellExecuteのための shell32.lib がリンクされてねえとか、setenvがねえとか、
OS依存なエラーでwin32環境でコンパイルできなくて、どうなっとるねん!!1
エラーつぶしているうちに、Changelog 見たらWindows関連部分が Fix されてるっぽくて、
http://www.iolanguage.com/scm/git/checkout/Io/
↑見たら直ってて、俺の時間返せー!!! って感じです・・・ orz
とりあえず、git落として最新版ダウンロードしたお
2008/02/05(火) 18:18:29
最近のバージョンって do( とかで改行すると、エラーで続きが入力できない。
3019
2008/02/06(水) 01:22:282008/02/06(水) 01:48:38
>>30
解決になっとらんでワロタ
解決になっとらんでワロタ
327
2008/02/06(水) 03:16:47 無理矢理解決してみた。
v := 0
inc := method(
res := nil
recv := call target
cntxt := call sender
cntxt foreachSlot(name, value,
if (recv == cntxt getSlot(name),
res = cntxt setSlot(name, cntxt getSlot(name) + 1)
)
)
msg := call message
right := msg argAt(0)
msg setArguments(list())
msg setNext(right)
res ++ := Lobby getSlot("inc")
res
)
v ++ := getSlot("inc")
v println
(v ++ ++ ++ println)
v println
v := 0
inc := method(
res := nil
recv := call target
cntxt := call sender
cntxt foreachSlot(name, value,
if (recv == cntxt getSlot(name),
res = cntxt setSlot(name, cntxt getSlot(name) + 1)
)
)
msg := call message
right := msg argAt(0)
msg setArguments(list())
msg setNext(right)
res ++ := Lobby getSlot("inc")
res
)
v ++ := getSlot("inc")
v println
(v ++ ++ ++ println)
v println
337
2008/02/06(水) 03:19:222008/02/06(水) 03:55:34
俺も...と思ったけど、ダメだったorz
value := 0
value ++ := method(
call message setName("call")
call sender setSlot("self", self + 1)
)
(value ++) println //1
value println // 0
value := 0
value ++ := method(
call message setName("call")
call sender setSlot("self", self + 1)
)
(value ++) println //1
value println // 0
2008/02/08(金) 14:08:19
++の話題、Smalltalkスレで聞いたら、同じような力技でしたw
アラン・ケイも認めた!Ruby>>>>>Smalltalk
http://pc11.2ch.net/test/read.cgi/tech/1150106090/169
> >>165
> やっつけですが、Squeak Smalltalk で。
>
> Object >> inc
> | sender index |
> sender := thisContext sender.
> index := (sender method at: sender pc - 2) \\ 16 + 1.
> ^sender tempAt: index put: (sender tempAt: index) + 1
>
> | a b before after |
> a:= 1. b := 2.
> before := {a. b}.
> a inc. b inc.
> after := {a. b}.
> ^{before. after} "=> #(#(1 2) #(2 3)) "
アラン・ケイも認めた!Ruby>>>>>Smalltalk
http://pc11.2ch.net/test/read.cgi/tech/1150106090/169
> >>165
> やっつけですが、Squeak Smalltalk で。
>
> Object >> inc
> | sender index |
> sender := thisContext sender.
> index := (sender method at: sender pc - 2) \\ 16 + 1.
> ^sender tempAt: index put: (sender tempAt: index) + 1
>
> | a b before after |
> a:= 1. b := 2.
> before := {a. b}.
> a inc. b inc.
> after := {a. b}.
> ^{before. after} "=> #(#(1 2) #(2 3)) "
2008/02/08(金) 14:19:36
>>35
Io もレシーバが代入されているスロット名を知る手段があればできるんだけどね。
Io もレシーバが代入されているスロット名を知る手段があればできるんだけどね。
2008/02/09(土) 07:44:21
つーか何が特徴なの?って物ばっかりだなこの手のは
++にしてもただの欠陥だし
無理矢理処理系の裏技使って解決しました!
ってまるっきりバカに見える
++にしてもただの欠陥だし
無理矢理処理系の裏技使って解決しました!
ってまるっきりバカに見える
2008/02/09(土) 08:08:10
> つーか何が特徴なの?って物ばっかりだなこの手のは
それは、あなたがバカなだけ
> ++にしてもただの欠陥だし
それは正しい
> 無理矢理処理系の裏技使って解決しました!
> ってまるっきりバカに見える
スマートではないのには同意。
しかし、どの言語にもスマートにできないものはある。
>>37の使っている言語にも苦手な処理はあるだろう?
それは、あなたがバカなだけ
> ++にしてもただの欠陥だし
それは正しい
> 無理矢理処理系の裏技使って解決しました!
> ってまるっきりバカに見える
スマートではないのには同意。
しかし、どの言語にもスマートにできないものはある。
>>37の使っている言語にも苦手な処理はあるだろう?
2008/02/09(土) 08:23:45
>>37 はスマートにディップスイッチでバイナリを直打ちしている
2008/02/09(土) 08:24:26
なんだこいつ
2008/02/09(土) 08:32:58
2008/02/09(土) 09:57:51
欠陥ではなくセマンティックスの違いでしょう。
変数を箱のようなものと捉えるか、ラベルのようなものと捉えるか、という。
変数を箱のようなものと捉えるか、ラベルのようなものと捉えるか、という。
2008/02/09(土) 12:52:34
マクロを導入すればいいのに。それで解決する問題だ。
2008/02/09(土) 13:12:13
>>43
あーそーゆーことね。
あーそーゆーことね。
2008/02/09(土) 17:38:49
まー、Ioはマクロがなくてもこれだけできる!みたいなところはある
というかマクロも実装できそうだがどうか
というかマクロも実装できそうだがどうか
2008/02/10(日) 15:55:43
っていうか、
>>41
>それと、欠陥なら直せば?
あなたの使ってる言語はすぐ直せるの欠陥?
だいたいの場合、欠陥があったら言語のコアな部分を弄らないといけないと思うんだけど、そうじゃないのが現実なんだろうか...?
small talkの例がでたけど、ioとかこの辺の言語は、その欠陥をなんとかできそうな感じなんだよな。
だからみんな魅力を感じてるんじゃないかと。
>>41
>それと、欠陥なら直せば?
あなたの使ってる言語はすぐ直せるの欠陥?
だいたいの場合、欠陥があったら言語のコアな部分を弄らないといけないと思うんだけど、そうじゃないのが現実なんだろうか...?
small talkの例がでたけど、ioとかこの辺の言語は、その欠陥をなんとかできそうな感じなんだよな。
だからみんな魅力を感じてるんじゃないかと。
2008/02/10(日) 16:08:46
++関連見てきた。
http://pc11.2ch.net/test/read.cgi/tech/1188997302/559
なんかすげー理解が広がリングwww
これ見ると言語実装論みたいのが分かって面白いわ
あと、smalltalkの実装も面白い
http://pc11.2ch.net/test/read.cgi/tech/1188997302/559
なんかすげー理解が広がリングwww
これ見ると言語実装論みたいのが分かって面白いわ
あと、smalltalkの実装も面白い
2008/02/19(火) 23:56:58
IoでObjective-Cの文法を導入する試み。
こういう「クレージー」なことができる言語は素晴らしい。
が、日常的に使いたいかどうかはまた別問題である。
http://www.rubyist.net/~matz/20080216.html#p01
こういう「クレージー」なことができる言語は素晴らしい。
が、日常的に使いたいかどうかはまた別問題である。
http://www.rubyist.net/~matz/20080216.html#p01
2008/03/05(水) 08:42:59
Rangeってどうすれば使えるのでしょうか?
何か準備がいるのかな。
Io 20070410
Io> Range
Exception: Object does not respond to 'Range'
---------
Object Range Command Line 2
何か準備がいるのかな。
Io 20070410
Io> Range
Exception: Object does not respond to 'Range'
---------
Object Range Command Line 2
2008/03/05(水) 09:11:29
windowsなら、C:\usr\local に置かなきゃ駄目
ってやつ?
ってやつ?
51デフォルトの名無しさん
2008/03/05(水) 12:21:31 winバイナリだと正規表現もないのな
2008/03/05(水) 20:49:16
たしかにwindowsバイナリで、別の場所に入れてました。
c:\usr\local\bin にコピーしてやってみたら使えるようになりました。
どうもありがとう。
Io> 1 to(8) map(v,v**2)
==> list(1, 4, 9, 16, 25, 36, 49, 64)
Io> 1 to(8) map(**2)
==> list(1, 1, 1, 1, 1, 1, 1, 1)
Io> "" asMutable do(65 to(65+25) map(v,append(v)))
==> ABCDEFGHIJKLMNOPQRSTUVWXYZ
c:\usr\local\bin にコピーしてやってみたら使えるようになりました。
どうもありがとう。
Io> 1 to(8) map(v,v**2)
==> list(1, 4, 9, 16, 25, 36, 49, 64)
Io> 1 to(8) map(**2)
==> list(1, 1, 1, 1, 1, 1, 1, 1)
Io> "" asMutable do(65 to(65+25) map(v,append(v)))
==> ABCDEFGHIJKLMNOPQRSTUVWXYZ
2008/03/22(土) 23:10:19
数値と数値を連結すると文字列じゃなくて数値になるんですね。
Io> 123 .. 456
==> 123456
Io> 123 .. 456 +1
==> 123457
Io> 123 .. 456 /3
==> 123152
Io> 123+456/3
==> 275
Io> 123 .. 456
==> 123456
Io> 123 .. 456 +1
==> 123457
Io> 123 .. 456 /3
==> 123152
Io> 123+456/3
==> 275
2008/03/23(日) 16:34:50
>>53
type で見てみると Sequence だし
123 .. (456 / 3)
こういうことじゃない?
下のようにするとエラーも出るし。
Io> Number ++ := method(v, self .. v)
==> method(v,
self .. v
)
Io> 123 ++ 456 / 3
Exception: Io Assertion 'operation not valid on non-number encodings'
---------
message '/' in 'Command Line' on line 1
type で見てみると Sequence だし
123 .. (456 / 3)
こういうことじゃない?
下のようにするとエラーも出るし。
Io> Number ++ := method(v, self .. v)
==> method(v,
self .. v
)
Io> 123 ++ 456 / 3
Exception: Io Assertion 'operation not valid on non-number encodings'
---------
message '/' in 'Command Line' on line 1
2008/03/23(日) 16:59:00
対話モードの結果にダブルクオートが出ないから勘違いしたのかな
何でもかんでもオブジェクトをasStringしてつなぐ模様
何でもかんでもオブジェクトをasStringしてつなぐ模様
2008/03/23(日) 17:50:07
どうも失礼しました。計算したものが連結されてるだけなんですね。
57デフォルトの名無しさん
2008/04/18(金) 01:11:19 Ioで日本語プログラミング
Io でもおk - はてな使ったら負けだと思っている
http://d.hatena.ne.jp/mr_konn/20080304/1204632557
関連ページ
第20回 日本語でおk | WIRED VISION
http://wiredvision.jp/blog/masui/200803/200803030100.html
Ruby もいいけど Smalltalk でも、おk。 - sumim’s smalltalking-tos
http://d.hatena.ne.jp/sumim/20080303/p1
inforno :: 日本語プログラミング言語Scala
http://inforno.net/articles/2008/03/04/japanese-language-programing-in-scala
Io でもおk - はてな使ったら負けだと思っている
http://d.hatena.ne.jp/mr_konn/20080304/1204632557
関連ページ
第20回 日本語でおk | WIRED VISION
http://wiredvision.jp/blog/masui/200803/200803030100.html
Ruby もいいけど Smalltalk でも、おk。 - sumim’s smalltalking-tos
http://d.hatena.ne.jp/sumim/20080303/p1
inforno :: 日本語プログラミング言語Scala
http://inforno.net/articles/2008/03/04/japanese-language-programing-in-scala
2008/04/22(火) 18:47:28
DarwinportsでIoを入れたのですが >>49と同じ状態で詰まっています
どのようにすればいいのでしょうか?
どのようにすればいいのでしょうか?
2008/04/22(火) 23:02:02
>>58
普通に落としてインストールする
普通に落としてインストールする
60デフォルトの名無しさん
2008/04/27(日) 09:17:59 Io> exit
Exception: while saving history file '$HOME/.io_history', reason: Device not configured
---------
saveHistory Z_CLI..io 42
ReadLine ? Z_CLI..io 42
Call relayStopStatus A2_Object.io 295
CLI saveHistory Z_CLI..io 55
Object exit Command Line 1
こんなのが出て正常に終了できない
Exception: while saving history file '$HOME/.io_history', reason: Device not configured
---------
saveHistory Z_CLI..io 42
ReadLine ? Z_CLI..io 42
Call relayStopStatus A2_Object.io 295
CLI saveHistory Z_CLI..io 55
Object exit Command Line 1
こんなのが出て正常に終了できない
61デフォルトの名無しさん
2008/04/27(日) 10:35:17 HOME環境変数は設定されてる?
2008/04/27(日) 12:35:51
できてます
また起動時に.io_historyがあるとすぐ落ちます
また起動時に.io_historyがあるとすぐ落ちます
2008/04/29(火) 22:28:52
インクリメント演算子実装してるが
++numなら簡単だが
num++はむずいな
++numなら簡単だが
num++はむずいな
2008/04/30(水) 17:25:44
なぜ?
2008/04/30(水) 20:02:09
前置だとmessage call argAt(0)でnumそのものを取得出来て
そっからメッセージの書き換えでnum = num + 1;っていうメッセージを作れるけど
後置だとすでにnumが評価されていてnumのメッセージそのものを取得できない。
そっからメッセージの書き換えでnum = num + 1;っていうメッセージを作れるけど
後置だとすでにnumが評価されていてnumのメッセージそのものを取得できない。
6665
2008/04/30(水) 20:27:07 まあ俺がioに詳しくないだけかもしれんけど
67デフォルトの名無しさん
2008/05/01(木) 19:43:40 > ++num
ああ、その手があったか!
ああ、その手があったか!
68デフォルトの名無しさん
2008/05/21(水) 03:29:46 Ioではオブジェクトリテラル({a:1,b:2}みたいなやつ)って書けないの?
着想を得たってあがってるNewtonScript、Luaにはあったのに。
着想を得たってあがってるNewtonScript、Luaにはあったのに。
2008/05/26(月) 01:27:36
>>68
演算子や中括弧にもメソッド割り当てられるから簡単にできるよ
演算子や中括弧にもメソッド割り当てられるから簡単にできるよ
2008/05/26(月) 02:59:45
2008/05/26(月) 07:59:19
ホワイトスペースに割り当てられたら最強なのにね
2008/05/26(月) 08:26:26
>>70
いや引数の数チェックしてやればいいだけの話だし
いや引数の数チェックしてやればいいだけの話だし
73デフォルトの名無しさん
2008/05/28(水) 03:38:05 >>69
すげえ、本当に簡単に出来るね。
List,Mapでの[]といい、なんで標準で定義してないんだろう。
{} := method(
obj := Object clone
call message arguments foreach(i,obj doMessage(i setName("setSlot")))
obj
)
{a=1,b=1+1} println
すげえ、本当に簡単に出来るね。
List,Mapでの[]といい、なんで標準で定義してないんだろう。
{} := method(
obj := Object clone
call message arguments foreach(i,obj doMessage(i setName("setSlot")))
obj
)
{a=1,b=1+1} println
74デフォルトの名無しさん
2008/05/31(土) 04:53:46 多分、>>68-73 みたいなFAQな流れを期待して、
Io sugeeeeとなるというのを想定しているのだろう
Io sugeeeeとなるというのを想定しているのだろう
75デフォルトの名無しさん
2008/07/05(土) 05:35:52 ほしゅ
76デフォルトの名無しさん
2008/07/30(水) 20:44:36 対話型で初期化処理とかできないの?
2008/08/04(月) 20:26:33
何をしたいの?
2008/08/05(火) 08:09:26
対話型インタプリタとエディタを同時に使いたい
イメージ的には、
prolog系でのedit.
haskellの処理系の:editみたいなことがしたい
イメージ的には、
prolog系でのedit.
haskellの処理系の:editみたいなことがしたい
79デフォルトの名無しさん
2008/10/09(木) 13:58:00 hosyu
80デフォルトの名無しさん
2009/01/23(金) 20:35:49 以下のコードで、最後が false になってしまうのはなぜなんでしょうか?
その前の出力を見る限りでは同じオブジェクトに見えるんですが…
Foo := Object clone
Foo priv := method(
list(call sender, self)
)
Foo bar := method(
self priv
)
l := Foo bar
l println
l at(0) println #=> Foo_0x80a87f0 ...
l at(1) println #=> Foo_0x80a87f0 ...
((l at(0)) == (l at(1))) println #=> false !!
その前の出力を見る限りでは同じオブジェクトに見えるんですが…
Foo := Object clone
Foo priv := method(
list(call sender, self)
)
Foo bar := method(
self priv
)
l := Foo bar
l println
l at(0) println #=> Foo_0x80a87f0 ...
l at(1) println #=> Foo_0x80a87f0 ...
((l at(0)) == (l at(1))) println #=> false !!
2009/01/23(金) 20:57:08
typeを見るとObjectとFooになってるね
2009/01/23(金) 21:41:51
>>81
レスありがとうございます。
l at(0) type println #=> "Object"
l at(1) type println #=> "Foo"
と、すると確かに違っていますね。
両方 Foo になっているべきに思えるんですが…うーん。
レスありがとうございます。
l at(0) type println #=> "Object"
l at(1) type println #=> "Foo"
と、すると確かに違っていますね。
両方 Foo になっているべきに思えるんですが…うーん。
2009/01/24(土) 10:18:49
仮想機会のバグだ
一期一会だ
一期一会だ
2009/01/25(日) 22:05:49
そうですね。バグですよね…。
レポートしておきます。
レポートしておきます。
8580
2009/01/26(月) 10:56:59 バグではないそうです。
call sender は呼び出し元のセルフではなく、ローカル環境(?)を返すとのこと。
(なので、call sender self とすれば良かった)
それで思いついて試したんですが、呼び出し元の変数を書き換えたりもできるんですね。
Foo := Object clone
Foo bar := method(
call sender v println
call sender v = "new value"
)
Object clone do(
v := "local value"
Foo bar #=> local value
v println #=> new value
)
call sender は呼び出し元のセルフではなく、ローカル環境(?)を返すとのこと。
(なので、call sender self とすれば良かった)
それで思いついて試したんですが、呼び出し元の変数を書き換えたりもできるんですね。
Foo := Object clone
Foo bar := method(
call sender v println
call sender v = "new value"
)
Object clone do(
v := "local value"
Foo bar #=> local value
v println #=> new value
)
2009/02/01(日) 12:11:47
Mac Portsにあったんでインストールしてみたものの「io」て打ちこんでも
コマンド見つからねーとか言うからport contentsしてみたらバイナリ名が「osxvm」だった。
コマンド見つからねーとか言うからport contentsしてみたらバイナリ名が「osxvm」だった。
2009/02/07(土) 11:16:46
皆Windowsでioやる時って、公式のWindows版バイナリ使ってます?
それとも自分でビルドしたの使ってます?
最新tarをMingwでビルドしようと思ったら、
IoFile.cでsys/wait.h使ってるらしくビルド通らないんですよね・・・。
回避案・代案知ってる人教えてください。
それとも自分でビルドしたの使ってます?
最新tarをMingwでビルドしようと思ったら、
IoFile.cでsys/wait.h使ってるらしくビルド通らないんですよね・・・。
回避案・代案知ってる人教えてください。
2009/02/07(土) 18:40:55
ヘッダファイル削除すりゃいいじゃん・・
2009/02/07(土) 20:42:07
ヘッダファイルの削除というのは、私には少々難しそうなので
まずCygwin使って再度挑戦してみたいと思います。
ありがとうございました。
まずCygwin使って再度挑戦してみたいと思います。
ありがとうございました。
90デフォルトの名無しさん
2009/02/13(金) 13:03:52 ↓Scalaスレで気になったことがあったんですが、IOだとこの辺の
優先順位の実装ってどんな風になってるんでしょうか?
プログラミング言語 Scala
http://pc11.2ch.net/test/read.cgi/tech/1205156417/739-743
739 デフォルトの名無しさん [] 2009/02/12(木) 02:57:16
+ や * はメソッドだって聞いたけど、
2 + 3 * 4 は 14ってちゃんと評価してくれるんだね
メソッドチェーンになるから、20が戻ってくると思った
これって遅延評価のおかげ?
Scalaのソースをちゃんと読まないといけないんだろうけど
740 デフォルトの名無しさん [sage] 2009/02/12(木) 03:21:54
+や*がメソッドだというのは間違ってないけど、中置式のメソッド呼び出しに
関しては、演算子の最初の1文字で優先順位が決まるというルールになってる。
このルールのおかげで、算術式に関しては直感的な動作をしてくれる。
Scala言語仕様6.12.3 Infix Operationsによると、優先順位は以下のようになってる。
letter < '|' < '^' < '&' < '<', '>' < '=', '!' < ':' < '+', '*' < '/', '%' < all other special characters
たとえば、
"HOGE" charAt 0 + 1
という式があった場合、charAtの最初の文字はletterなので、+よりも演算子としての優先順位は低い。
そのため、
"HOGE".charAt((0).+(1))
と解釈される。
優先順位の実装ってどんな風になってるんでしょうか?
プログラミング言語 Scala
http://pc11.2ch.net/test/read.cgi/tech/1205156417/739-743
739 デフォルトの名無しさん [] 2009/02/12(木) 02:57:16
+ や * はメソッドだって聞いたけど、
2 + 3 * 4 は 14ってちゃんと評価してくれるんだね
メソッドチェーンになるから、20が戻ってくると思った
これって遅延評価のおかげ?
Scalaのソースをちゃんと読まないといけないんだろうけど
740 デフォルトの名無しさん [sage] 2009/02/12(木) 03:21:54
+や*がメソッドだというのは間違ってないけど、中置式のメソッド呼び出しに
関しては、演算子の最初の1文字で優先順位が決まるというルールになってる。
このルールのおかげで、算術式に関しては直感的な動作をしてくれる。
Scala言語仕様6.12.3 Infix Operationsによると、優先順位は以下のようになってる。
letter < '|' < '^' < '&' < '<', '>' < '=', '!' < ':' < '+', '*' < '/', '%' < all other special characters
たとえば、
"HOGE" charAt 0 + 1
という式があった場合、charAtの最初の文字はletterなので、+よりも演算子としての優先順位は低い。
そのため、
"HOGE".charAt((0).+(1))
と解釈される。
91デフォルトの名無しさん
2009/02/13(金) 13:04:54741 デフォルトの名無しさん [sage] 2009/02/12(木) 03:22:54
訂正。s/letter/all letters/
742 740 [sage] 2009/02/12(木) 03:25:55
ありゃりゃ。コピペして不等号加えるときにミスったorz
正しくは、以下。
all letters < '|' < '^' < '&' < '<', '>' < '=', '!' < ':' < '+', '-' < '*', '/', '%' < all other special characters
743 739 [] 2009/02/13(金) 00:44:52
>>740
サンクス
BigDecimalでも試したけど、ちゃんと掛け算・割り算を優先するってありがたいな
RemoteActorの動作がいまいちわからなかったり(コンパイルした後、scalaコマンドで動かないのに、javaコマンドからだったらちゃんと動くとか)
わからんことだらけなんだけど、しばらく弄ってみることにする
2009/02/13(金) 16:59:48
ttp://f21.aaa.livedoor.jp/~kizz/prog/io/_docs/IoProgrammingGuide_ja_only.html
マニュアルには
標準の演算子の優先順位は C 言語と同じ
ユーザー定義の演算子は常に左から右へ
とある
マニュアルには
標準の演算子の優先順位は C 言語と同じ
ユーザー定義の演算子は常に左から右へ
とある
93デフォルトの名無しさん
2009/02/14(土) 13:04:15 なるほど・・・
> ユーザ定義の演算子 (標準の演算子名は使えない) は、常に左から右に動作する。 Us
「ユーザ定義」は「常に左から右」か
Scalaは最初の一文字できまるということなので、Scalaの方がよいかもだな・・・。
> ユーザ定義の演算子 (標準の演算子名は使えない) は、常に左から右に動作する。 Us
「ユーザ定義」は「常に左から右」か
Scalaは最初の一文字できまるということなので、Scalaの方がよいかもだな・・・。
94デフォルトの名無しさん
2009/02/19(木) 10:13:06 「左から右へ」は演算子が左結合ってことじゃないの?
定義するときに優先度指定はできるよ
以下を参考に
ttp://subtech.g.hatena.ne.jp/cho45/20071021/1192926373
定義するときに優先度指定はできるよ
以下を参考に
ttp://subtech.g.hatena.ne.jp/cho45/20071021/1192926373
2009/02/19(木) 20:31:25
文字列パースにおいてのみ機能するようだ
あと、
ttp://www.nabble.com/Question-about-OperatorTable-and-difference-between-Interpreter-Scripts-td17356792.html
対話環境とスクリプト環境では挙動が変わるらしい
あと、
ttp://www.nabble.com/Question-about-OperatorTable-and-difference-between-Interpreter-Scripts-td17356792.html
対話環境とスクリプト環境では挙動が変わるらしい
9687
2009/03/18(水) 19:56:06 MinGWでビルドできました。
>>88さんが仰っていたように、
<sys/wait.h>をコメントアウトして
Line:238辺りにある
IONUMBER(WEXITSTATUS(exitStatus))
を
IONUMBER( ( (exitStatus >> 8) & 0xff) )
と書き直したらいけました。
今更ですが、ありがとうございました。
>>88さんが仰っていたように、
<sys/wait.h>をコメントアウトして
Line:238辺りにある
IONUMBER(WEXITSTATUS(exitStatus))
を
IONUMBER( ( (exitStatus >> 8) & 0xff) )
と書き直したらいけました。
今更ですが、ありがとうございました。
2009/04/15(水) 00:08:59
ねーよw
2009/08/13(木) 08:04:09
96です。
久しぶりにgithubから最新取ってきてコンパイルしてみましたが、
>>96の問題は修正されていました。良かった。
しかし今度はアドオンが上手く動かせていません。
使っている方いましたら、動作具合を教えて頂けないでしょうか?
久しぶりにgithubから最新取ってきてコンパイルしてみましたが、
>>96の問題は修正されていました。良かった。
しかし今度はアドオンが上手く動かせていません。
使っている方いましたら、動作具合を教えて頂けないでしょうか?
2009/12/01(火) 01:16:47
ろびー!
100デフォルトの名無しさん
2009/12/16(水) 19:42:55 公式サイトが・・・
github行くといくつかあるんだけどどれがいいんだ?
github行くといくつかあるんだけどどれがいいんだ?
101デフォルトの名無しさん
2009/12/17(木) 00:30:10102デフォルトの名無しさん
2009/12/17(木) 03:19:07 子供のおもちゃ?
103デフォルトの名無しさん
2009/12/17(木) 16:56:56104デフォルトの名無しさん
2009/12/17(木) 17:03:13 ちなみに落としたのはdownload押してmaster選んだやつ
105デフォルトの名無しさん
2009/12/17(木) 18:52:37 余計なことは言わなくていい
106デフォルトの名無しさん
2009/12/18(金) 12:42:50 セックスしたときに下の前の穴に入れた、なんて明示する必要ないよな
107デフォルトの名無しさん
2009/12/18(金) 18:46:25 そんな小さいところに入るかよボケが
108デフォルトの名無しさん
2010/01/08(金) 00:53:05 久しぶりにいじってみたんですが、いつのまにか、++ が実装できるようになっていますね。
call message previous が実装されていました。
Number ++ := method(
varname := call message previous name
now := call sender getSlot(varname)
if (now, call sender setSlot(varname, now + 1))
self
)
a := 1
a println # => 1
a ++ println # => 1 (後置なので返ってくるのは 1 !)
a println # => 2
(a++ + 456 / 3) println # => 154
a println # => 3
call message previous が実装されていました。
Number ++ := method(
varname := call message previous name
now := call sender getSlot(varname)
if (now, call sender setSlot(varname, now + 1))
self
)
a := 1
a println # => 1
a ++ println # => 1 (後置なので返ってくるのは 1 !)
a println # => 2
(a++ + 456 / 3) println # => 154
a println # => 3
109デフォルトの名無しさん
2010/04/17(土) 00:41:01 この言語はいったいどういう用途に向いてるの?
110デフォルトの名無しさん
2010/05/30(日) 02:19:56 漏れら極悪非道のageブラザーズ!
今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧_∧ age
(・∀・∩)(∩・∀・) age
(つ 丿 ( ⊂) age
( ヽノ ヽ/ ) age
し(_) (_)J
今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧_∧ age
(・∀・∩)(∩・∀・) age
(つ 丿 ( ⊂) age
( ヽノ ヽ/ ) age
し(_) (_)J
111デフォルトの名無しさん
2010/07/23(金) 12:30:29112デフォルトの名無しさん
2011/01/06(木) 02:10:47113デフォルトの名無しさん
2011/03/11(金) 01:26:24.60 test
115デフォルトの名無しさん
2011/08/08(月) 23:24:45.08116デフォルトの名無しさん
2011/08/09(火) 00:07:08.88 うへえ、翻訳出たのか
言語つまみぐい入門には最適だな
言語つまみぐい入門には最適だな
117デフォルトの名無しさん
2011/08/09(火) 01:21:40.84 ためしに貼り付けてみたんだけど、このスレ、見てる人いるんですね。
ちなみに件の本は、言語のつまみ食いに慣れている人にとっては
既に味見済みの言語ばかりかと思いますが、まとめて復習出来るという点で良書です。
しっかり読んでも、流し読みでも楽しい本だと思います。
# まだ読み終えていませんが。
一方、そうでない人にとっては、つまみ食いというほどお手軽に読める本ではないかもしれません。
でもIoスレを見ているような人には不要な心配ですね。
ちなみに件の本は、言語のつまみ食いに慣れている人にとっては
既に味見済みの言語ばかりかと思いますが、まとめて復習出来るという点で良書です。
しっかり読んでも、流し読みでも楽しい本だと思います。
# まだ読み終えていませんが。
一方、そうでない人にとっては、つまみ食いというほどお手軽に読める本ではないかもしれません。
でもIoスレを見ているような人には不要な心配ですね。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 前駐中国大使・垂秀夫『高市首相が台湾有事答弁を国会でしてしまったのは高市首相のなかに戦略的思考が無いから。安倍晋三を見習え』 [718678614]
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 金曜ロードショー😭
- 朝だよー🥁🥺ドンドンドンドン
- ( ・᷄ὢ・᷅ )ケツ
- モブサイコ「私がJAグループに何か利益誘導するということは全くありません」 [402859164]
