clap-builtinパッケージ

7 views
Skip to first unread message

Ryohei Ueda

unread,
Dec 3, 2010, 12:45:05 PM12/3/10
to clap-...@googlegroups.com
garaemonです

なにはともあれ, builtinから実装しなくては始まらない気がしたので, 少しずつ実装を初めています.
https://github.com/garaemon/clap/tree/master/src/builtin/

pythonのbuiltin関数のreferenceはここです
http://docs.python.org/library/functions.html

これをみるとわかるのですが, evalとかcompileとかabsとか, 微妙なものがいくつかあります.

以下のように分類できるかと思います
個人的に1, 2は実装しなくてよいかと思うのですがどうでしょうか?
clap-builtinは, common-lispと同時にuse-packageすると便利なものが多いと思うので,
シンボルの衝突は特に避けたいです.

また, 微妙そうなものは後回しにしてちょこちょこと実装を進めていきましょう.

以下のリストは適時更新.
1. CLに同名で同等の機能がある物
abs, ...
2. CLに同名でほぼ同等の機能がある物
compile, eval(引数が文字列かリストかが異なる), ...

3. CLでは実装が難しい物
locals, ...

-- ryohei

Naoto Yokoyama

unread,
Dec 4, 2010, 1:09:27 AM12/4/10
to clap-...@googlegroups.com
>個人的に1, 2は実装しなくてよいかと思うのですがどうでしょうか?
完全に再現する事が目的ではないので,実装しなくて良いでしょう.
この立場をとると,実装すべき部分とそうでない部分を厳密に線引きする
事が難しくなりますが,個別に議論してやや直観的に決める事にしても,
少なくとも現段階では悪くない判断だと思います.
3 についても,明確な理由が無い限り,保留しておくのが妥当であるかもしれません.

そうすると,clap-builtin で実装できる(する必要のある)ものは多くはなさそうですね.


2010年12月4日2:45 Ryohei Ueda <gara...@gmail.com>:

Ryohei Ueda

unread,
Dec 4, 2010, 3:00:12 AM12/4/10
to clap-...@googlegroups.com
> そうすると,clap-builtin で実装できる(する必要のある)ものは多くはなさそうですね.
そうですね

g1さんからユーティリティを追加したいという話がありましたが,
全体で広く使えそうなユーティリティはbuiltin/util.lispに
追加していく方向で行きましょう

-- ryohei

2010/12/4 Naoto Yokoyama <built...@gmail.com>:

Ryohei Ueda

unread,
Dec 6, 2010, 8:18:01 AM12/6/10
to clap-...@googlegroups.com
garaemonです

とりあえず, builtinの関数に関してはさらっと実装してみました
http://docs.python.org/library/functions.html
https://github.com/garaemon/clap/blob/master/src/builtin/clap-builtin.lisp

unicode関連に関しては実装していません.

builtinのclassおよびmethod実装なのですが,
http://docs.python.org/library/stdtypes.html
memoryviewの実装とかはちょっとむずかしそうですね.

-- ryohei

2010/12/4 Ryohei Ueda <gara...@gmail.com>:

Ryohei Ueda

unread,
Dec 30, 2010, 1:36:34 AM12/30/10
to clap-...@googlegroups.com
garaemonです

組み込みの文字列関係のメソッドを実装しました.
# MLの件数は減ってますが実装は着々とやってますよ!
https://github.com/garaemon/clap/blob/master/src/builtin/string.lisp

実装はloop祭りです. 一応ある程度高速な実装を意識しました.
これが入ったので, clapはそれなりに使えるものが出てきたかと思います

テストほとんどしてないので, 使ってみた方はバグ報告お願いします

で, 相談なのですが
clap-builtinは制約として, common-lispパッケージにuse-package
して問題がないというのを意識してます。
ですので名前の衝突はちょっと問題になります.

具体的には, str.findとstr.countのみstring-find, string-countという名前にして
他のメソッドはそのままの名前にしてます.
例えば, str.split -> splitメソッド

これは統一性がないのですべてstring-xxxにしたほうが良いかな?とも
思っているのですがみなさんの意見を聞かせてください

-- ryohei

2010/12/6 Ryohei Ueda <gara...@gmail.com>:

CHIBA Masaomi

unread,
Dec 30, 2010, 8:20:52 AM12/30/10
to clap-...@googlegroups.com
g000001です。

At Thu, 30 Dec 2010 15:36:34 +0900,
Ryohei Ueda wrote:
[...]


> で, 相談なのですが
> clap-builtinは制約として, common-lispパッケージにuse-package
> して問題がないというのを意識してます。
> ですので名前の衝突はちょっと問題になります.
>
> 具体的には, str.findとstr.countのみstring-find, string-countという名前にして
> 他のメソッドはそのままの名前にしてます.
> 例えば, str.split -> splitメソッド
>
> これは統一性がないのですべてstring-xxxにしたほうが良いかな?とも
> 思っているのですがみなさんの意見を聞かせてください

自分は、

1) clパッケージと被るものは、shadowしてしまう
2) use-packageさせることを意図したパッケージは、clパッケージと合わせてclapとしてまとめる
(pythonの名前を優先)
3) use-packageするとき、clapパッケージは、clとは一緒に指定しない

というのはどうだろうかと思いました。

理由は、
1) string-が全部つくのも、特定のものだけ付くのも使い勝手が悪い気がする
2) どの名前がclパッケージのどことぶつかっているのかをパッケージ作成の際に気にするのが面倒
3) 使っている時にどれがpython風に動作する関数だったか、cl風の動作か確認するのが面倒そう
というのが主なところです。

ユーザーがuse-packageするときはもうpython風動作がベースですよと、
頭を切り換えた方が楽な気がします。

逆にパッケージをuse-packageしないで使うことがメインの場合は、
(py:count "foo" "")
のようになると使い勝手が良いかなと思いました。


CHIBA Masaomi

unread,
Dec 30, 2010, 8:22:31 AM12/30/10
to clap-...@googlegroups.com
g000001です。
すいません、言葉が足りませんでした
> 1) clパッケージと被るものは、shadowしてしまう
cl側をshadowです。


2010/12/30 CHIBA Masaomi <chiba....@gmail.com>:

Ryohei Ueda

unread,
Dec 31, 2010, 2:27:26 AM12/31/10
to clap-...@googlegroups.com
garaemonです

なるほど、ユーザ側から考えたら、
clap:countと提供するのがよさそうですね。

Ryohei Ueda

unread,
Jan 5, 2011, 4:48:14 AM1/5/11
to clap-...@googlegroups.com
garaemonです

報告ですが, clap-builtinがほぼ実装し終わったと思います.
https://github.com/garaemon/clap/blob/master/src/builtin/clap-builtin.lisp

-- ryohei

2010/12/31 Ryohei Ueda <gara...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages