TL; DR
Учитывая строку, содержащую (действующий) глагол, как я могу получить, что глагол без его совершения каких-либо переменных? Например, например, eval
- это функция; она должна работать так:Оценить строку как глагол в J
eval '+ @ >: @ %'
[email protected]>:@%
eval '+'
+
Я только это нужно, чтобы быть в состоянии выполнить глаголы и вернуть их, но было бы здорово иметь произвольный код будет Эвальд. (Я знаю о ".
, BTW.)
Как забавный небольшой эксперимент, я подумал: «Эй, может быть, я могу сделать глагол, который преобразует строку глаголов в поезд глаголов!» Я знаю, что я могу использовать ;:
чтобы «слово-римент» строку в J-глаголы, например:
]str =: '+ >: %'
+ >: %
;: str
┌─┬──┬─┐
│+│>:│%│
└─┴──┴─┘
До сих пор, так хорошо. Теперь, я просто буду primatively "присоединиться к" их с '@'
помощи ,.
("Равель пункты"):
'@' ,.~ > ;: str
+ @
>:@
% @
плющения это дает:
+ @>:@% @
И, наконец, отрубив концевую @
с }:
дает + @>:@%
, уродливую версию того, что я хочу, + @ >: @ %
.
Теперь все это хорошо и хорошо, за исключением одного: это строка. Почти готово! Но не совсем. Я подумал про себя: «О! ".
был бы идеален для этого, это в основном оценка». К моему ужасу, Документы прочитать таким образом (EMPH мой):
".y
выполняет предложениеy
. Если выполнение приводит к существительному, результатом".y
является это существительное; , если результатом выполнения является глагол, наречие или конъюнкция или если нет результата выполнения, результат".y
- пустой вектор.
Ну, дарнит. Это не сработает. Я, безусловно, может взломать его вместе определяя глагол внутри строки:
]verb =: , }: , '@' ,.~ > ;: str
+ @>:@%
'ret =: ' , verb
ret =: + @>:@%
". 'ret =: ' , verb
ret
[email protected]>:@%
И это все хорошо, но довольно неуклюжий, особенно для J. Удар может быть слегка смягчил с этим is
глаголом:
is =: "[email protected](,&'=:'@,@[,}:@,@('@',.~>@;:)@])
'G' is '+>:%'
G
[email protected]>:@%
G 5
1.2
Но работает только в том случае, если вы готовы передать функцию переменной.
Итак, мой вопрос: как преобразовать общую строку с глаголом в полезный глагол?