Hatena::Groupsubtech

冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

 | 

Nov 25, 2007 (Sun)

ほしい言語 06:04 はてなブックマーク - ほしい言語 - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

たぶんプロトタイプベースな Ruby がほしいのかもなぁ。

self #=> Global env. Object

hoge = "hoge"
self.hoge = "hoge"
Global.hoge = "hoge"
Global.Global #=> Global

Global.proto #=> Object
Global.fun   #=> fun {|&block| [native] }

Object.foo = fun {
    self #=> a env. object having receiver as proto 
}

Array.map = fun {|&f|
    ret = []
    self.each {|i|
        ret << f(i)
    }
    ret
}

String.each = fun {|&f|
    split("").each(&f)
}

String.map = Array.slot("map")
String["map"] = Array.slot("map")
String.set_slot("map", Array.slot("map"))
String["[]="]("map", Array.slot("map"))

Array.clone.set(1, 2, 3) == [1, 2, 3] == Array.with(1, 2, 3)

o = Object.clone.do {
    self #=> just the `o`
    hoge = "hoge"
    self.foo = "foo"
    fuga = fun {|x|
        "fuga"
    }
}
o.hoge #=> "hoge"
o.foo  #=> "foo"
o.fuga #=> "fuga"
o.slot("fuga") #=> fun {|x| "fuga" }

Array.sum = Array.slot("inject").partial(0) {|r,i| r + i}
[1, 2, 3].sum #=> 6

括弧の省略をしても呼びだしされるあたりがなんかうまくいかなそう。文法の矛盾があったりして、寝ておきたら「だめじゃんw」と思うんだろうなぁ。

Ruby を書いててときどき、 JS みたいに関数を自由にあつかいたいと思う。Ruby はクラスベースで、メソッドはかならずどこかのクラスに属し、UnboundMethod は bind しないかぎりよべず、bind の対象ももとのクラスと関係がないといけない。だから……だからなんだろう……


うまくまとまらない。

したいこと

  • 環境 (変数をセットする場) もオブジェクトにして書きかえしたい
    • スコープチェイン == 環境オブジェクトのプロトタイプチェイン
  • 関数/メソッドはとりだしてつけかえたりしたい。
  • 関数/メソッドを部分適用したい
  • メソッドよびだしの括弧は省略したい
  • return かきたくない
  • 関数を簡単に関数にわたしたい。
  • 正規表現リテラルはほしい。
  • ダックタイピングしたい
  • if とか case とかは構文としてあっていい (無理にメッセージセンドにしない)
  • 関数はメソッドと同じように呼びだしたい。
 | 

スポンサード リンク

書いてる人

cho45 (佐藤広央) (www.lowreal.net)

Perl, JavaScript, Ruby, HTML, CSS, Web etc


スポンサード リンク