2016-05-24 3 views
0

Я пишу некоторые испытания вспомогательные функции, чтобы сделать вывод более разумным:Можно ли определить своих собственных операторов в Rascal?

bool tstEq(first, second) { 
    if(first == second) 
    return true; 
    else { 
    println("<first> was not equal to <second>"); 
    return false; 
    } 
} 

Можно ли сделать что-то вроде этого?

bool ===(first, second) = tstEq(first, second); 

использование:

test bool myTest() = 1 === 2 

Что бы привести к чему-то вроде:

rascal>:test 
1 was not equal to 2 
bool: false 
+0

Существует предложение или было предложено сделать функции проверки мошенничества сделать что-то подобное автоматически. –

ответ

1

Короткий ответ: нет. Я полностью согласен с тем, что это может быть удобно (но может также привести к менее читаемому коду).

Учитывая большой список тем, которые мы хотим рассмотреть в первую очередь, это не похоже на то, что такая функция придет к Rascal в ближайшем будущем.

+0

Я буду использовать его как «нормальную» функцию. Некоторые функции разбора языка, начинающиеся с «символов» (! @ # $%^& *), Также могут использоваться как инфикс. Или используйте такие конструкции, как размещение функции между backticks (\ ') как infix:' first \ 'tstEq \' second' – Tim