2004-08-19 (Thu)
_ [言語] The Jolt Programming Language
その名も「Jolt」!
ハッカー御用達のカフェイン飲料Joltにちなんで名付けられたらしい。 ドメイン名もwww.jolt-lang.orgと、ちゃんと-lang.orgの伝統(?)にのっとっている。
この言語はC++をリプレースするのを目的とする、静的型のシステム言語なのだが、 文法が(静的型があることを除けば)Rubyそっくり。「end文法」だし。
[Matzにっき(2004-08-18)より引用]
がーん、と思って見てみたら、そんなにRubyそっくりというほどではないようだ。
まつもとさんは、
Rubyの特徴であったブロックもGroovyではなんかハック的な文法*1であったのに対して、 こちらのブロックはきちんとRubyとそっくりのセマンティックスになっている。「do〜end」と「{〜 }」の両方が使えるところまでRubyそっくり。
[Matzにっき(2004-08-18)より引用]
と書かれているが、メソッド定義側の
class Vector is
...
proc binop(do op: proc(int32, int32: int32)): int32 is
v: int32 := this[0]
for i in 1 .. this.size - 1
v := op(v, this[i])
end
return v
end
...
end
というのはちょっとRubyとは違うような。 これってGroovyみたいなセマンティクスじゃないのかなあ。
_ [mod_ruby] Apache::MethodDispatcher
外国人に、mod_rubyにmod_pythonのpublisherみたいなのはないか、と聞かれて作ってみた。 でも、
if !cls.public_instance_methods(false).include?(method_name) return FORBIDDEN end
というのはどうも今一つ。 やはりDecoratorか。
_ まつもとさんのツッコミ
"do"は"&"の置換であり、静的型言語なのでパラメータや戻り値の
型も指定されている、と読むんじゃないでしょうか。
[Journal InTime - The Jolt Programming Language , Apache::MethodDispatcherより引用]
なるほど、&の方でしたか。
yieldの方を期待していたのですが、yieldの説明を見て、何か違うな、と。
_ [babel] 文法変更
実はbabelの方も文法を変更をしようかな、とか。
- 改行を文のセパレータに。thenも改行でいいかな。
- 引数がないメソッド呼び出しにも括弧を使用 (括弧がない場合はbound methodを返す)。
- x.fooはx.get_foo()、x.foo = yはx.set_foo(y)として扱う (Satherはそれぞれx.foo(), x.foo(y))。
- :=を=に、=を==に、::=は:=に変更。
- case insensitiveに。
- $は廃止。
outパラメータの廃止。代りに多値を導入。
divmod(x: int, y: int): int, int is return x.div(y), x.mod(y) end foo is a, b := divmod(38, 5) end
- 返り値の有無による多重定義の廃止。 返り値があるメソッド呼び出しも文に(dummy変数で受け取る必要なし)。
構文糖としてのfor文の導入。
for i, j in x.elt!, y.elt! do ... end
は、
loop i := x.elt! j := y.elt! end
と同じ。
- 同じく構文糖としてのwhile文。
しかし、迷うなあ、いろいろ。
- http://www.rubyist.net/~matz/20040818.html ×36
- http://kodou.net/diary/ ×6
- http://www.j96.org/~kouji/diary/?date=20040819 ×4
- http://www.j96.org/~kouji/diary/ ×3
- http://blog.good-day.net/~yabuki/diary/ ×3
- http://www.rubyist.net/~matz/0903.html ×2
- http://search.live.com/results.aspx?q=rubyist ×2
- http://www.rubyist.net/~matz/ ×2
- http://www.rubyist.net/~matz/20040819.html ×2
- http://search.live.com/results.aspx?q=rubyist&mrt=... ×2
- http://kodou.net/d/ ×2
- http://nais.to/hiki/hiki.cgi?匿名日記:2004年03月 ×1
- http://www.kodou.net/d/ ×1
- http://sbs.mobile.yahoo.co.jp/p/sbs/union/search?p... ×1
- http://www.rubyist.net/~matz/20040722.html ×1
- http://babelfish.altavista.com/babelfish/trurl_pag... ×1
- http://jarp.jin.gr.jp/diary/200207a.html ×1
- http://sbs.mobile.yahoo.co.jp/union/search?p=yield... ×1
- http://www.rubyist.net/~matz/20040903.html ×1
- http://search.live.com/results.aspx?q=rubyist&form... ×1
- http://sbs.mobile.yahoo.co.jp/union/search?p=カフェイン... ×1
- http://babelfish.altavista.com/babelfish/trurl_pag... ×1
- http://mixi.jp/home.pl ×1
- http://sbs.mobile.yahoo.co.jp/p/sbs/mobilesite/sea... ×1
- http://sbs.mobile.yahoo.co.jp/p/sbs/mobilesite/sea... ×1
- http://caojon.seesaa.net/article/419493.html ×1
- http://www.myprofile.ne.jp/blog/archive/FFF/18 ×1
- http://www.j96.org/~kouji/diary/?date=20040811 ×1
- http://homepage2.nifty.com/zn/nnikki/200104.html ×1
- http://mixi.jp/ ×1
- http://mixi.jp/new_friend_diary.pl ×1
- http://sbs.mobile.yahoo.co.jp/p/sbs/mobilesite/sea... ×1
- http://sbs.mobile.yahoo.co.jp/union/search?fr=m_to... ×1
- http://babelfish.altavista.com/babelfish/trurl_pag... ×1
- http://sbs.mobile.yahoo.co.jp/union/search?p=セマンティ... ×1
- http://www.bloglines.com/citations?siteid=66289&it... ×1
- http://sbs.mobile.yahoo.co.jp/p/sbs/union/search?p... ×1
- http://64.233.179.104/translate_c?hl=en&u=http://s... ×1

"do"は"&"の置換であり、静的型言語なのでパラメータや戻り値の
型も指定されている、と読むんじゃないでしょうか。まあ、「そっ
くり」は言い過ぎかも。
セマンティックスですが、
obj.inject(1) {|a,x| a+x}
が、実は
obj.inject(1, {|a,x| a+x})
という意味でしかないというGroovyとは、明確に暗黙の特別な引数
であるRubyやJoltは違うんじゃないかと思います。