あり、現在そのための何もないが、それは良い考えです。だから前もってsomeone has suggested itが良い。
:-)私は手動で行う必要がありますか?
"dialect spec"形式を定義する新しいジェネレータを手動で書き込むことができます。次に、HELPコマンドを与えるか、HELPを拡張して認識させるかのいずれかを行います。
make-dialect: function [spec [block!] body [block!]] [
return function ['arg [block! word!]] compose/deep/only [
case [
arg = 'HELP [
foreach keyword (spec/keywords) [
print [keyword "-" {your help here}]
]
]
block? arg [
do func [arg] (body) arg
]
'default [
print "Unrecognized command. Try HELP."
]
]
]
]
そうあります:この(すべて期待できない柔軟性を示唆し、むしろ、明らかにされるように)ような何かを行う際に便利になるかもしれ技術のグループを実証する
非常に短い例あなたの関数は方言スペックをとり、関数を作ります。あなたはそれがあまり手動で行うことができます使用して、あなたの発電機を持ってたら:
mumble: make-dialect [keywords: [foo baz bar]] [
print ["arg is" mold arg]
]
>> mumble help
foo - your help here
baz - your help here
bar - your help here
>> mumble [<some> [dialect] {stuff}]
arg is [<some> [dialect] {stuff}]
ここで使用される技術は、次のとおりです。
を引用ソフト - 通常あなたが引用符「にmumble 'help
を言わなければならないでしょう"ライトワードとしての助け!言葉を渡すためにそれを得るために! (デフォルトのHELPコマンドを実行するのとは対照的に) argは...それは「ソフトが引用された」'arg
として生成された関数内で宣言されたので、しかし、これは言葉とパスが評価されないことを意味します。あなたが渡したい変数を持っていれば、と言う必要があります:varまたは(var)を引数に使用するという意味でトレードオフになります(括弧、get-words、およびget-pathsはまだあります)。だけではなくvar
(方言を渡すためにブロックが変数である場合を想像)ので、あなたは、必ずしもそれを使用したくない...しかし、私はそれを点灯し、言葉もなくmumble help
作品を作るための興味深いデモを考えました!
ディープ組成からspec
とmake-dialect
に渡されるbody
変数のみmake-dialect
限り存在するが実行されています。終わったら、彼らはなくなるでしょう。だから、あなたが生成している機能の本体にこれらの言葉を残すことはできません。ファンクション・ジェネレータは、効果的に阻止するためにデータを抽出し、関数のボディ構造にそれらをステッチ、結果を作るために実行される前に、これが体内に括弧を評価するCOMPOSEは/ DEEP使用しています。
の再利用機能のバインディング作業 - 生成された関数はmake-dialect
のコール・サイトに存在していなかったパラメータarg
とスペックを持っています。だから、議論は何かにリバウンドする必要がありますが、何ですか?それを手動で行うことも可能ですが、簡単な方法の1つはFUNCにあなたのために仕事をさせることです。
者は、文書の方言だけではないのを目指していますが、自分のREBOLのシステムが設定されている場合、そのキーワードは、例えば(再マッピングされるかもしれないことにより、簡単な方法を提供する提案されたソリューションで使用される技術のいくつかであります別の話し言葉のために)。