среда, 27 октября 2010 г.

29. Можно ли определить новую операцию?

Нельзя. Технически это было бы несложно, но создало бы больше проблем, чем решило. Допустим, мы решили добавить операцию **, означающую в некоторых языках возведение в степень. Посмотрим, какие возникают трудности.
  • Неоднозначность. Как интерпретировать a**b? (a)**(b) или a*(*b). Заметьте, оба варианта синтаксически корректны, но имеют разный смысл. Придется создавать правила для разрешения этой ситуации.
  • Ассоциативность. Чему эквивалентно a**b**c? (a**b)**c или a**(b**c)?
  • Приоритет. Чему эквивалентно a+b**c? (a+b)**c или a+(b**c)?
Напоминаю, с точки зрения разработчика языка, проблемы не являются неразрешимыми. В некоторых языках есть такая возможность.

Комментариев нет:

Отправить комментарий

Можно использовать теги <b>, <i>