>最後の方に、正規表現関連の関数がグローバルということが
>書かれていましたが、私は、Pythonは、よく知らないのですが、
>何で正規表現の関数をクロージャに押し込んで提供していないのですか?
>例えば、Luaであれば、Stringというクロージャに入っています。
Luaは以前リファレンスをちょっと眺めたきりなので、
ここで言う「クロージャ」が何であるのかがよくわからないのですが。
http://lua-users.org/wiki/StringLibraryTutorial
ここを見る限り、stringというテーブルに、いろんなメソッドを
クロージャとして埋め込んでいる、という認識でよいでしょうか?
http://www.uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_manual_ja.html#5.3
ここを見ても、
| 文字列ライブラリはすべて、テーブル string 内の関数として提供される。
と書いてあるし。
ここでのstringの使われ方は、純粋に名前空間としてのものですよね。
現状のcrowbarには、名前空間を分割する機能がないので、今回はreg_で
逃げたわけです。モジュールによる名前空間の分割はいずれそのうちやろうと
思っていますから、現時点で、Lua的な方法(crowbarでやるなら、グローバルな
stringというオブジェクトにクロージャを格納することになるのでしょう)で
解決しようとは思いません。
>また、crowbarには、まだハッシュを組み込んでなかったと思うのですが、
>ハッシュは組み込まないのですか?
>必須なデータ構造だと思います。
ハッシュはですねえ…
もちろん考えていないことはないのですが、問題は、どの階層で実現するかです。
言語の外で、ライブラリとして提供しても十分だと思うんですが、
どうでしょうか(基本型のハッシュキーの取得方法は考えるにしても)。
ハッシュのリテラル(「{"a" => "hoge"}」みたいなの)って要りますかねえ。
考えるべきところはたぶんふたつあって、
a)ハッシュのリテラルを言語仕様として用意するかどうか。
b)ハッシュのオブジェクトを、(JavaScriptやLuaのように)現状のassocの
別の見え方として考えるかどうか。
私としては、a)はまあやるならやってもいいけど(ただし優先順位は低い)、
b)は嫌、というところです。
>あと、最近、Luaを勉強していて、組み込み言語と謳っている割りに
>例えば、LuaとCとのインタフェースを書くのがかなり面倒で
>少しがっかりしているのですが、crowbarはぜひとも組み込み部分を強化
>して欲しいです
ええと、私はLuaを使っていないのでご意見をお聞かせ願いたいわけですが、
現状で、Luaとcrowbarを比べてみてどうでしょうか?
Luaとcrowbarでネイティブ関数を書くときのことを比較すると、
(1)引数や戻り値
Lua…スタックを直接操作
crowbar…引数や戻り値なので、ちょとはわかりやすいかな。
(2)GC
Lua…何もしなくていい(?) Ruby的コンサバGC?
lua_newtable()が「新しい空のテーブルを作り、スタックに積む。」そうだから、
スタックにないものは勝手にGCされそうな気もするんですが。
crowbar…GCされたくなかったらスタックに積んどけ。
正直、これは面倒くさいです。せめて、最後のスタックの後始末を処理系側で
やれば、というか実はそれは造作もないのですが。
(3)アプリケーション固有データ
Lua…ユーザデータ
crowbar…ネイティブポインタ
ファイナライザの仕様も含め、そっくりに見えます。また車輪を再設計したか。
いっそ今みたいに特定の引数を持ったネイティブ関数が呼ばれる仕様ではなく、
また、CRB_add_native_function()で関数を登録する必要もない、というようにして、
もっと楽にネイティブ関数を書けるようにするというのも考えられますが…
処理系依存のコードはあんまり書きたくないですし。
>鬼車を搭載しても、まともに張り合ったら、Rubyに対抗するのは
>難しいと思いますので、組み込み用スクリプトでメジャーなものは
>なさそうなので、そういう方向はどうでしょうか?
まあ、別にRubyと張り合う気はないんですけど。
方向性として、組み込み用スクリプトというのは、[685]にも書いたように
そもそも言語処理系に興味を持った時点からありました。
ただ、今は別の方向も考えています。こんなの↓とか。
http://kmaebashi.com/zakki/zakki0027.html#lang
ていうか、企画本来の主旨であったはずの「プログラミング言語の作り方の紹介」
という観点からすれば、crowbarは、crowbarのような実装方針の言語としては
とっくにオーバースペックであり、たぶん私は暴走している状態なわけですが。
ええと誰か止めて。