にゃははー

はへらー

std::futureで未来に生きたと思ってたけどAdaがすでに通っていた道だった...

std::futureで未来に生きる - Flast?なにそれ、おいしいの? でドヤァ...ってやったけど、Adaを勉強したらAdaがすでに通っていた道だった。しかも言語仕様で。

with Ada.Real_Time;
use Ada.Real_Time;
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;

procedure future is

   task type Another_World is
      entry Set_Value (An_Value : in Integer);
   end Another_World;

   World : Another_World;

   task body Another_World is
      Value : Integer;
   begin
      accept Set_Value (An_Value : in Integer) do
         Value := An_Value;
      end Set_Value;

      Put ("value :");
      Put (value);
      Put_Line ("");
   end Another_World;

begin
   delay To_Duration (Milliseconds (1000));
   World.Set_Value (1);
end future;

このコードは(withの問題を除いて)Ada83でも可能です。ってことはCなんかよりも早く1983年からpromise-future的なことは考えられていたということですね。
ライブラリでっていう後手後手に回ってるC++が悲しいです。