[SikiLanguage] [式鬼言語航海日誌]
2008-02-14
2008/02/14_020054と、いうことで実行プロセスをえっちら実装中。
「といってもコード量は大したこと無いねえ。一時間もあれば書けそうな……」
………………いやいやいや。けっこう大変ですよ?デバックしながらWeb見て、デバックしながらテレビ見て、デバックしながら本読んで…………
「誘惑が多いと大変だね。時間と体力があり余ってる状況において、精神論は圧倒的に正しいということか」
さすがに『「やる」というところまで行かない』ということはありませんが……。世の中には『勝手に楽しませてくれる』ものが多いですからね。誘惑を振り切って実際に手を動かすのは大変です。受け身に慣れてしまうと身体と頭が鈍ってしまいますしね…………。
「で、今日は何だい?」
今日はメソッド呼び出しについて少々。これもアイディアのメモ書きです。まだ色々と問題があるので一度書き出して見ようかと。
「例によって自分専用&閲覧不要かい」
ですね。暗号のように不可解な解説です。自分で言うのも何ですが。
まず、メソッド呼び出しの考え方から。
「基本はCLOSだっけ?」
そうですね。CLOSの多態についてはTiny CLOS 入門に目を通してもらうことにして、基本的な考え方をだらだらと箇条書きで。
- メソッド呼び出し自体も手続きの一つ。
- カリー化の手法で、『データスタックからメソッドを探し出す手続き』を順次データスタックのCellから探して実行する。
- 引数はデータスタックに積まれているCellの一部
- データスタックに積まれたCellを見て該当するメソッドを探す
- メソッドの検索方法は色々(メソッド呼び出しの手続きの実装次第。拡張も可能にする?)
- 総称関数(多態関数)
- データスタックのCellが作り出す木構造の(スーパークラスの)一致(パターンマッチ)(やりたい)
- 条件によるパターンマッチ(条件分岐で代用?)
- 正規表現とかオートマトンとかの受理(できたらいいな)
- パフォーマンスは犠牲にしたくないので、まずは決定性のものに限定(PEGはNG……)
- データスタックのトップから順に検索する
- メソッド呼び出しでは遅延評価の処理は行わない。
- メソッド呼び出しで使用する作業用スタックを用意する
- 作業用スタックなので、他の作業に使われる可能性もあり(他の手続きでCellを積まれることを考慮した挙動にする必要あり)
…………あれ? こんなもんだっけ?
「『正規表現とかオートマトンとかの受理』での多態は無謀の一言だね。そこまで高度にしても誰も使いこなせないだろうに」
まあ、そこは『将来の展望』ということで。実装も大変そうですし。決定性を諦めてPEGにすれば簡単になりそうですけどね。
「まあ、まずはその前に実行プロセスの実装だね」
制作・著作: 野分(nowake) at fiercewinds.net (Creative Commons 表示-継承 2.1 日本)