spamsink: (Default)
[personal profile] spamsink
Пишут, что continuations (продолжения) придумал Черчилль в 18-м году ван Вийнгаарден в 1964 году.

Но оказывается, что еще в Алголе-60 штука, которая называлась формальным параметром-меткой, на самом деле была почти продолжением.

   1.  _BEGIN
   2.   _PROCEDURE M(I, X, Y);
   3.    _VALUE I; _INTEGER I; _LABEL X, Y;
   4.    _BEGIN
   5.     _IF I < 20 _THEN _BEGIN
   6.      M(I+1, Y, A);
   7.      _GOTO X;
   8.     _END _ELSE _IF _FALSE _THEN
   9.      A: OUTPUT(‘ZDDD’, I);
  10.    _END;
  11.   M(0, T, T); T:
  12.  _END


17 14 11 8 5 2


Насколько я могу судить, в описании языка этот механизм явно специфицирован не был; "оно само приползло".
История открытий продолжений: http://www.cs.tufts.edu/~nr/cs257/archive/john-reynolds/histcont.pdf

Date: 2017-09-13 05:34 am (UTC)
From: [personal profile] ygam
А-а-а!

Date: 2017-09-13 04:31 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Ой, и правда.

А в 68-м еще запроцедуривание было. Ну чисто наши лямбды.

Date: 2017-09-13 04:44 pm (UTC)
cema: (Default)
From: [personal profile] cema
А в лисп продолжения пришли позже, только с scheme, так?

Date: 2017-09-14 08:14 pm (UTC)
cema: (Default)
From: [personal profile] cema
Ну а в C# они с 4 версии, кажется.
Page generated Mar. 4th, 2026 06:01 pm
Powered by Dreamwidth Studios