Сообщение Re[14]: Nemerle через 5 лет - выстрелит или скончается? от 10.10.2014 14:27
Изменено 10.10.2014 15:41 STDray
Здравствуйте, gbear, Вы писали:
G>Чисто теоретически, наверное, можно (не специалист, ибо) объявить else часть в макросе if опциональной.
Практически тоже можно.
И даже работает.
Я думал так: when/unless созданы для побочных эффектов, а ifelse — для "чистых" вычислений. Но в этом нет смысла, потому исключительно вопрос вкуса.
G>Чисто теоретически, наверное, можно (не специалист, ибо) объявить else часть в макросе if опциональной.
Практически тоже можно.
macro IF(cond, e1, e2)
syntax ("IF", "(", cond, ")", e1, Optional(";"), Optional("ELSE"), Optional(e2))
{
match(e2)
{
| null => <[ match ($cond) { | true => $e1; () | _ => () } ]>
| _ => <[ match ($cond) { | true => $e1 | _ => $e2 } ]>
}
}И даже работает.
IF(true) WriteLine("ok");
def x = IF(false) "true" ELSE "false";Я думал так: when/unless созданы для побочных эффектов, а ifelse — для "чистых" вычислений. Но в этом нет смысла, потому исключительно вопрос вкуса.
Здравствуйте, gbear, Вы писали:
G>Чисто теоретически, наверное, можно (не специалист, ибо) объявить else часть в макросе if опциональной.
Практически тоже можно.
И даже работает.
Я думал так: when/unless созданы для побочных эффектов, а ifelse — для "чистых" вычислений. Но в этом нет смысла, потому исключительно вопрос вкуса.
G>Чисто теоретически, наверное, можно (не специалист, ибо) объявить else часть в макросе if опциональной.
Практически тоже можно.
macro IF(cond, e1, e2)
syntax ("IF", "(", cond, ")", e1, Optional("ELSE"), Optional(e2))
{
match(e2)
{
| null => <[ match ($cond) { | true => $e1; () | _ => () } ]>
| _ => <[ match ($cond) { | true => $e1 | _ => $e2 } ]>
}
}И даже работает.
IF(true) WriteLine("ok");
def x = IF(false) "true" ELSE "false";Я думал так: when/unless созданы для побочных эффектов, а ifelse — для "чистых" вычислений. Но в этом нет смысла, потому исключительно вопрос вкуса.