vieweditattachhistoryswikistopchangessearchhelp

戯/六本松

http://hpcgi2.nifty.com/guion3/tiki/tiki.cgi?c=v&p=%CF%BB%CB%DC%BE%BE
六本松/言語案020911

の変な言語(の案と超初期試作品)、第二段。



(ソフトウェア配線CUE氏の話より)
>関数のインスタンスを一つつくるのと、関数クラスのインスタンスを一つつくるのとは、等価じゃないと思ってたが?>六本松。

概念的には、等価で「なくする自由」がユーザには有るけど、等価で「ない義務」が有るわけじゃないっす。

関数オブジェクトもまた参照プロトタイプオブジェクト方式(?)であり、
今ここにあるその関数オブジェクトが、「関数の雛型(クラスみたいなもの)」か、あるいは「関数インスタンス」か、は、
状況つーか使い方次第で決まる。

○メンバ変数(ローカル変数とも言えるが)なスロットの幾つかに初期値を持った奴を「雛型」とし、
○それのプロト子を作り、
○子に「引数」に相当する情報を追加し(引数は初期値を外部(?)から指定されたローカル変数である、という御馴染みの立場ね。)、
○そして子を「Call」する、
○Callされた処理が終わったら、子は捨てる、

というのが恐らく普通の使い方。

でも、そうする義務は無い。他の使い方も色々出来る。

例えば、一度Callした使用済みの汚染された子を、再び使う、とか。
これは「継続」もどき。#関数呼び出し履歴に対して頓着しないので、「継続」とはちょっと違うが。

例えば、雛型の子に情報を追加し、その子から孫を作って、孫をCall(そして汚染)する、
子は残すけど孫は使用後すぐに捨てる、なんてのも出来る。
これは「クロージャ」もどき…かな。

例えば、雛型(?)の子を作らず、いきなり雛型をCallする。
わざと汚染することも出来るし、
処理内容がローカル変数空間に対して非破壊(ようするにローカル変数を定数として以外には全然使わない)だと判っているなら、
子を作る負担をケチるという目的でも使えることになる。

…ってゆー話?

>適当なところで止めて、また好きな時に再開できる。六本松では、それを表す概念がないと見たが、

「止める」の主語(つまり誰が(どうやって)「止める」のか?)次第では、無理かも知れないが、
予め用意しておく処理を、わざと止めるちゅーか中途半端(?)な所で終るようにコーディングしとけば、
それで用が足りたりしないかなあ?

で、「再開」したければ、手は幾らでも有る。
汚染済みの関数インスタンスのCodeを必要に応じて別のもの(「続き」の処理を行うもの)に差し替えてからCallするとか、
あるいは
汚染済みインスタンスの複製を作って(Codeを必要に応じて…以下同文)Callしてもいいだろうし。

…ってゆー話?



念のため。六本松とソフトウェア配線とでは、やりたいことは違う。
もしかして相容れないかも知れない、別のアイデアだ。

配線では自由度を減らしたい。というか「自由度をどこまで使ってしまったかを監視したい」。
#ぶっちゃけ、仕事場で、制御されてない自由度のせいで疲れ果てた挙句に、思いついたアイデアなんで(^^;

六本松は逆に、自由度自体を増やしまくりたい。
オブジェクトに出来ることとクラスに出来ることと関数クラスに出来ることと関数インスタンスに出来ることと継続に出来ることとクロージャに出来ることと…を
ぜーんぶ(それもたった1つの仕掛で)実現したい、という強欲。
#ぶっちゃけ、趣味プロで、自由度が「足りなく」て腹がたった挙句に、思いついたアイデアなんで(^^;



このページを編集 (2908 bytes)


Congratulations! 以下の 1 ページから参照されています。

This page has been visited 3433 times.