Являются ли Scala «продолжениями» просто прикольным синтаксисом для определения и использования функций обратного вызова? - PullRequest
9 голосов
/ 23 апреля 2010

И я имею в виду, что в том же смысле, что C / Java for - просто прикольный синтаксис для цикла while.

Я до сих пор помню, когда впервые узнал о цикле for в C, о том, какие умственные усилия потребовалось для понимания последовательности выполнения трех управляющих выражений относительно оператора цикла. Мне кажется, что такие же усилия нужно приложить, чтобы понять продолжения (в Scala и, наверное, на других языках).

И тогда возникает очевидный дополнительный вопрос ... если так, то какой в ​​этом смысл? Кажется, что много боли (сложность языка, ошибки программиста, нечитаемые программы и т. Д.) Не принесут никакой пользы.

1 Ответ

3 голосов
/ 23 апреля 2010

В некотором смысле, да, продолжения - это прикольный синтаксис для использования обратных вызовов. Вы можете вручную выполнить очень сложное глобальное преобразование вашего кода (так называемое преобразование в стиле продолжения-продолжения), и вы получите продолжения без помощи прямой языковой поддержки.

Однако преобразование всей кодовой базы, вероятно, не очень практично, и результирующий код трудно читать, поэтому компилятор сделает это за вас за кулисами НАМНОГО лучше.

...