[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 05/09 08:29 / Filesize : 22 KB / Number-of Response : 80
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Io Language



1 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:03:44 ]
www.iolanguage.com/
f21.aaa.livedoor.jp/~kizz/prog/io/_docs/IoProgrammingGuide_ja.html

32 名前:7 mailto:sage [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


33 名前:7 mailto:sage [2008/02/06(水) 03:19:22 ]
>>32 書いてて気づいたんだけれど
1 + ; 2
は、 1 + 2 と解釈されるのね。
改行も同様につながってしまう。
そのせいで右辺のメッセージのごまかしが完全じゃない。


34 名前:デフォルトの名無しさん mailto:sage [2008/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


35 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:08:19 ]
++の話題、Smalltalkスレで聞いたら、同じような力技でしたw

アラン・ケイも認めた!Ruby>>>>>Smalltalk
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)) "

36 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:19:36 ]
>>35
Io もレシーバが代入されているスロット名を知る手段があればできるんだけどね。

37 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 07:44:21 ]
つーか何が特徴なの?って物ばっかりだなこの手のは
++にしてもただの欠陥だし
無理矢理処理系の裏技使って解決しました!
ってまるっきりバカに見える

38 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:08:10 ]
> つーか何が特徴なの?って物ばっかりだなこの手のは

それは、あなたがバカなだけ

> ++にしてもただの欠陥だし

それは正しい

> 無理矢理処理系の裏技使って解決しました!
> ってまるっきりバカに見える

スマートではないのには同意。
しかし、どの言語にもスマートにできないものはある。
>>37の使っている言語にも苦手な処理はあるだろう?

39 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:23:45 ]
>>37 はスマートにディップスイッチでバイナリを直打ちしている

40 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:24:26 ]
なんだこいつ




41 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 08:32:58 ]
>>38
これはこれは
別に>>38を名指しでバカって言ったわけじゃないよ
リトマス試験紙にするつもりは無かったのだが

それと、欠陥なら直せば?

42 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:57:51 ]
欠陥ではなくセマンティックスの違いでしょう。
変数を箱のようなものと捉えるか、ラベルのようなものと捉えるか、という。

43 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:52:34 ]
マクロを導入すればいいのに。それで解決する問題だ。

44 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:12:13 ]
>>43
あーそーゆーことね。

45 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:38:49 ]
まー、Ioはマクロがなくてもこれだけできる!みたいなところはある
というかマクロも実装できそうだがどうか

46 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:55:43 ]
っていうか、

>>41
>それと、欠陥なら直せば?

あなたの使ってる言語はすぐ直せるの欠陥?
だいたいの場合、欠陥があったら言語のコアな部分を弄らないといけないと思うんだけど、そうじゃないのが現実なんだろうか...?

small talkの例がでたけど、ioとかこの辺の言語は、その欠陥をなんとかできそうな感じなんだよな。
だからみんな魅力を感じてるんじゃないかと。

47 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:08:46 ]
++関連見てきた。
pc11.2ch.net/test/read.cgi/tech/1188997302/559

なんかすげー理解が広がリングwww
これ見ると言語実装論みたいのが分かって面白いわ

あと、smalltalkの実装も面白い

48 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:56:58 ]
IoでObjective-Cの文法を導入する試み。

こういう「クレージー」なことができる言語は素晴らしい。
が、日常的に使いたいかどうかはまた別問題である。

www.rubyist.net/~matz/20080216.html#p01

49 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 08:42:59 ]
Rangeってどうすれば使えるのでしょうか?
何か準備がいるのかな。
Io 20070410
Io> Range

Exception: Object does not respond to 'Range'
---------
Object Range Command Line 2

50 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 09:11:29 ]
windowsなら、C:\usr\local に置かなきゃ駄目
ってやつ?



51 名前:デフォルトの名無しさん [2008/03/05(水) 12:21:31 ]
winバイナリだと正規表現もないのな

52 名前:デフォルトの名無しさん mailto:sage [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

53 名前:デフォルトの名無しさん mailto:sage [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

54 名前:デフォルトの名無しさん mailto:sage [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        

55 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:59:00 ]
対話モードの結果にダブルクオートが出ないから勘違いしたのかな
何でもかんでもオブジェクトをasStringしてつなぐ模様

56 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 17:50:07 ]
どうも失礼しました。計算したものが連結されてるだけなんですね。

57 名前:デフォルトの名無しさん [2008/04/18(金) 01:11:19 ]
Ioで日本語プログラミング

Io でもおk - はてな使ったら負けだと思っている
d.hatena.ne.jp/mr_konn/20080304/1204632557

関連ページ

第20回 日本語でおk | WIRED VISION
wiredvision.jp/blog/masui/200803/200803030100.html

Ruby もいいけど Smalltalk でも、おk。 - sumim’s smalltalking-tos
d.hatena.ne.jp/sumim/20080303/p1

inforno :: 日本語プログラミング言語Scala
inforno.net/articles/2008/03/04/japanese-language-programing-in-scala

58 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:47:28 ]
DarwinportsでIoを入れたのですが >>49と同じ状態で詰まっています
どのようにすればいいのでしょうか?

59 名前:デフォルトの名無しさん mailto:sage [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

こんなのが出て正常に終了できない



61 名前:デフォルトの名無しさん [2008/04/27(日) 10:35:17 ]
HOME環境変数は設定されてる?

62 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 12:35:51 ]
できてます

また起動時に.io_historyがあるとすぐ落ちます

63 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:28:52 ]
インクリメント演算子実装してるが
++numなら簡単だが
num++はむずいな

64 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 17:25:44 ]
なぜ?

65 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:02:09 ]
前置だとmessage call argAt(0)でnumそのものを取得出来て
そっからメッセージの書き換えでnum = num + 1;っていうメッセージを作れるけど
後置だとすでにnumが評価されていてnumのメッセージそのものを取得できない。

66 名前:65 mailto:sage [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にはあったのに。

69 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 01:27:36 ]
>>68
演算子や中括弧にもメソッド割り当てられるから簡単にできるよ

70 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 02:59:45 ]
>>69
中括弧に割り当てるのやめて、まじやめて
昔","演算子で泣かされたの重いだして涙目




71 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 07:59:19 ]
ホワイトスペースに割り当てられたら最強なのにね

72 名前:デフォルトの名無しさん mailto:sage [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

74 名前:デフォルトの名無しさん [2008/05/31(土) 04:53:46 ]
多分、>>68-73 みたいなFAQな流れを期待して、
Io sugeeeeとなるというのを想定しているのだろう

75 名前:デフォルトの名無しさん [2008/07/05(土) 05:35:52 ]
ほしゅ

76 名前:デフォルトの名無しさん [2008/07/30(水) 20:44:36 ]
対話型で初期化処理とかできないの?

77 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 20:26:33 ]
何をしたいの?

78 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 08:09:26 ]
対話型インタプリタとエディタを同時に使いたい

イメージ的には、
prolog系でのedit.
haskellの処理系の:editみたいなことがしたい


79 名前:デフォルトの名無しさん [2008/10/09(木) 13:58:00 ]
hosyu






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<22KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef