2008年 05月 13日

Io って頭おかしいなぁ (いい意味で)

curlyBrackets を知った。

Object curlyBrackets := Object getSlot("method")

foo := {
	"aaa" println
}

bar := {a,
	"bbb" println
	a
}

foo

bar(getSlot("foo")) # method は普通に書くと実行されてしまうので getSlot する必要がある。
aaa
bbb
aaa

ちょっと他の言語に近づいた感じ。

もう少し変態的にしてみる

def foo (mes) {
    mes println
}

こういうふうに書けるようにするために def メソッドを定義する

def := {
	name := call message next name
	args := call message next arguments map(i, i name)
	meth := call message next next
	next := meth next

	# cut message chain
	meth setNext(nil)

	# set the method to caller context
	call sender setSlot(name, call sender doMessage(meth))

	# set arguments list
	call sender getSlot(name) setArgumentNames(args)

	# pass to next message
	call message setNext(next)

	# return the method
	call sender getSlot(name)
}
# 引数なしなら仮引数省略可
def hogehoge {
	"hogehoge" println
}

def piyopiyo (mes) {
	mes println
}

# 引数なしなら括弧いらない
hogehoge
hogehoge()

# 引数ありなら括弧必須
piyopiyo("foobar")

Foo := Object clone do (
	def foo (mes) {
		mes println
	}
)

Foo foo("alert")

書いた式がどうコンパイルされたかは (前にも書いたけど) 以下のようすればわかる。

Message fromString("def foo (mes) { mes println }") code println
#=> def foo(mes) curlyBrackets(mes println)

call message は呼びだしもとのメッセージチェイン (def foo(mes) curlyBrackets(mes println)) をさしてる。call message next は今のチェインの次、すなわち foo(mes) curlyBrackets(mes println) で、call message next name で先頭のメッセージの名前がとれる。メッセージを自分でとって doMessage することでメソッドを作って、呼びだしもとのコンテキストにセットする。setNext でメッセージをチェインを切ったり、スキップしたりする。

実際もっと簡単に

def := method(
	ret := Object clone do (
		foo := method(
			self args := call message arguments map(i, i name)
			self
		)

		curlyBrackets := method(
			meth := method() setMessage( call message argAt(0) ) setArgumentNames(args)

			context setSlot("foo", meth)
		)
	)
	ret context := call sender
	ret
)

def foo () {
	"faaa" println
}

foo

とかだと、method_missing 相当がないのでうまくいかない。(これは動くけど、foo 決めうちだからうごいてる)

method_missing に相当するのは forward だった

2008年 05月 12日

フィルタリング

フィルタリングは対象を自分で決めないと意味ない。

2008年 05月 11日

気が付いたら

ひだまりスケッチみてるっていう 5 話ばっかみるのアレだなーって思いはじめると 9 話ばっかり見るようになる

オリジナリティがどうとか言ってるのをみると、なんかもやもやする。お前の DNA のどんだけがオリジナルなんだよ的な

環境

だいたいの人は、幼稚園とか、小学校とか、物心がついたときから、環境を読みとって、立ち位置を判断して喋っている。空気読んでる。集団の中だと、普通はそうせざるを得ない。それをしなくて許されるなり、それをしなくて言われることを耐えられる強さなりっていうのも結局、ところどころで、環境が許している一定数で、それは運なのだと思う。「できる」ということの裏には常に、環境がそれをすることを許している、っていうことがある。


おれは極めて普通に育ってきて、思ったことをそのまま言うのは正しいことではない、環境・空気を読まないといけないと擦りこまれているから、本心では正しくないと思っていることを、行動してしまうことは多々ある。そのときの行動は、自動的で、自分っていうものがどうにかできるものではなくなってる。「どうにもできない」って考えることをやめればいい、という人がいるわけだけど、その「どうにもできない」と考えてしまうことが既に、どうにもできないことなのだ。そのときの無力な感じ、自動的な感じ、そして、その無力感さえもが、自動的なプロセスに組込まれている感じ、ループする。決定権なんて全くないように感じる。

それはとても希望がないけれど、いつも頭を過ることだ。意識というものさえ、化学反応の延長にあるから、反応を継続させていくだけの、自動的なことで、どうにもならない。「なるようにしかならない」はこれだと思う。

日記の文章さえ自動的に勝手に綴られるものだし、人工無脳がなんか喋っているのと何が違うのかわからない。

あぶないあぶない

超絶やる気を失なって発狂しそうになったけど、inject っていうか reduce のおかげでまのがれた。不思議なタイミングだ

本心では正しくないと思っていることを、行動してしまうこと

それがとても嫌だから、できるだけ関係性を断って、自分の自然なことをできるようにならなければと思ったのだったけど途中でそれた……

日記

  • ハルヒをみくる伝説抜きにして全部見た。
    • サムデイ イン ザ レインは2回見た。
    • ハルヒってツンデレとはなんか違う気がするんだけど、やっぱ一言でいうとツンデレなのかなぁ
    • 別にツンデレに限らないけど、必要なのはそういう表面的なことじゃなくて信頼感なんだなぁと、古泉のセリフとか Puppy Love とか聴きながら思った。
  • 紅の5話と6話を見た。
    • 監督が千年女優の演出やってた人なんだなー
    • 見てて疲れる
  • ハナマル☆センセイションの原曲を初めて聴いた。
  • ひだまりスケッチ3巻を再読

その中途半端さえ

継続さえしていれば継続する中途半端さとして極端になる

青春を無駄にしてやってもなんの意味もないですよ。