Информация об изменениях

Сообщение Re[14]: Nemerle через 5 лет - выстрелит или скончается? от 10.10.2014 14:27

Изменено 10.10.2014 15:41 STDray

Здравствуйте, gbear, Вы писали:

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 — для "чистых" вычислений. Но в этом нет смысла, потому исключительно вопрос вкуса.
Re[14]: Nemerle через 5 лет - выстрелит или скончается?
Здравствуйте, gbear, Вы писали:

G>Чисто теоретически, наверное, можно (не специалист, ибо) объявить else часть в макросе if опциональной.


Практически тоже можно.
  macro IF(cond, e1, e2)
  syntax ("IF", "(", cond, ")", e1, Optional("ELSE", 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 — для "чистых" вычислений. Но в этом нет смысла, потому исключительно вопрос вкуса.