TLでの動詞として文字列を評価し;(有効)動詞を含む文字列を考えるとDR
は、どのように私はすべての変数にそれをコミットすることなく、その動詞を取得していますか?たとえば、eval
はその関数です。それは次のように動作するはずです:はJ
eval '+ @ >: @ %'
[email protected]>:@%
eval '+'
+
は、私は動詞を実行し、それらを返すことができるようにする必要がありますが、任意のコードがeval'dする持ってクールになります。 (私はところで、".
について知っています。)楽しい小さな実験として
、私は思った「ねえ、多分私は動詞の列に動詞の文字列を変換します動詞を作ることができます!」私はそうのように、J-動詞に文字列を「単語IFY」に;:
を使用できることを知っている:
]str =: '+ >: %'
+ >: %
;: str
┌─┬──┬─┐
│+│>:│%│
└─┴──┴─┘
これまでのところ、とても良いです。今、私はちょうど,.
( "ラヴェル項目")を使用して'@'
でそれらを "参加" primativelyます:
'@' ,.~ > ;: str
+ @
>:@
% @
:
+ @>:@% @
そして最後に、}:
と末尾@
をオフにチョッピングを私が欲しいものの醜いバージョンである+ @>:@%
をもたらす。+ @ >: @ %
。
ここでは、1つのことを除いて、これはすべてうまくいきます。それは文字列です。ほぼそこに!しかし、それほどではない。私は自分自身に、 "ああ!".
がこれには完璧だと思った、それは基本的にevalだと思った。私の狼狽に、ドキュメントが(EMPH鉱山)、読み取ら:
".y
は、文y
を実行します。実行結果が名詞になる場合、".y
の結果はその名詞です。 実行結果が動詞、副詞または結合詞の場合、または実行結果がない場合".y
の結果は空のベクトルです。
まあ、darnit。それは動作しません。私は確かに、文字列の中から動詞を定義することによって、それを一緒にハックすることができます
]verb =: , }: , '@' ,.~ > ;: str
+ @>:@%
'ret =: ' , verb
ret =: + @>:@%
". 'ret =: ' , verb
ret
[email protected]>:@%
そして、これは打撃がこのis
動詞で、わずかに軟化させることができる、特にJ.のため、すべてが順調と良いのではなく、不器用です:
is =: "[email protected](,&'=:'@,@[,}:@,@('@',.~>@;:)@])
'G' is '+>:%'
G
[email protected]>:@%
G 5
1.2
しかし、変数に関数をコミットする場合にのみ機能します。
私の質問は、動詞を持つ一般的な文字列を使用可能な動詞に変換するにはどうすればいいですか?