From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 24BC37FD90 for ; Mon, 9 Jan 2017 18:04:17 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=rossberg@mpi-sws.org; spf=Pass smtp.mailfrom=rossberg@mpi-sws.org; spf=None smtp.helo=postmaster@hera.mpi-klsb.mpg.de Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of rossberg@mpi-sws.org) identity=pra; client-ip=139.19.1.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="rossberg@mpi-sws.org"; x-sender="rossberg@mpi-sws.org"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of rossberg@mpi-sws.org designates 139.19.1.49 as permitted sender) identity=mailfrom; client-ip=139.19.1.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="rossberg@mpi-sws.org"; x-sender="rossberg@mpi-sws.org"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@hera.mpi-klsb.mpg.de) identity=helo; client-ip=139.19.1.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="rossberg@mpi-sws.org"; x-sender="postmaster@hera.mpi-klsb.mpg.de"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3Ap4M9Rh1dgbdPMJ9hsmDT+DRfVm0co7zxezQtwd8Z?= =?us-ascii?q?seIXKvad9pjvdHbS+e9qxAeQG96Kt7Qe16GH7+jJYi8p2d65qncMcZhBBVcuqP?= =?us-ascii?q?49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6?= =?us-ascii?q?JvjvGo7Vks+7y/2+94fdbghMizexe61+IRq5oQjVucQdnJdvJLs2xhbVuHVDZv?= =?us-ascii?q?5YxXlvJVKdnhb84tm/8Zt++ClOuPwv6tBNX7zic6s3UbJXAjImM3so5MLwrhnM?= =?us-ascii?q?URGP5noHXWoIlBdDHhXI4wv7Xpf1tSv6q/Z91SyHNsD4Ubw4RTKv5LpwRRT2lC?= =?us-ascii?q?kIKSI28GDPisxxkq1bpg6hpwdiyILQeY2ZKeZycr/Ycd4cWGFPXNteVzZZD42h?= =?us-ascii?q?YIQAE+oPMuRWoYfypFUOowWwCw63CePz0z9Ig2P63a0m3+kjFwzNwQwuH8gJsH?= =?us-ascii?q?TRtNj4KKESXv2vzKbW1zrDdO5d1yv66IjTaRAuuu+DXah/ccHMzkQvDQTFjk6L?= =?us-ascii?q?qYP+ITyVzOsNvnOe7+p4VOKjknUnqg9qojS1wccskIbJi5sTx1vZ+yt5x4M1Ks?= =?us-ascii?q?e5SE59edOlHppQtyKbN4tuXMwtXmBotzwgxr0Bo567cy4Hw4kkyR7Hc/GLboaF?= =?us-ascii?q?7xb5WOqMJTp0nm9pdKiwihu290Wr1/fyWdOu0FlQqypIitnMuW4J1xzU8sWHSu?= =?us-ascii?q?Vy/l271jqV0gDT8uBELVk3larfMJ4u2aQ8lp8LsUTMBCP5hVv5gLeXdkUi5Oeo?= =?us-ascii?q?9/zqbqjoq5KYLYN4lwXzPr4zlsClDuk1NhACX22B9uS90L3j81f5QLJPjvAuiK?= =?us-ascii?q?nZt4vaJd8AqaGnGQ9V3Z0u6xOnDzenydgYhncGLElfdBKAlYjpNEnCIOrkAven?= =?us-ascii?q?n1SsjDBryujaMbL7B5XNKmHPkLPgfbZm905R0xEzzNBa55JMEL4NOvPzWknrtN?= =?us-ascii?q?zZFBA1KQK0w/y0QOl6g6YXXWmIBqrRFarOuFuL76p7JuyFeIYRuz/VJP0s5vqo?= =?us-ascii?q?hng8zwwzZ66siLIRZGq1F+8uGUKCenDhmNhJRX0NpRE0QfbloFiaUHtIeG30WL?= =?us-ascii?q?gzsGJoQLm6BJvOE9j+yIeK2z22S9gPPjhL?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CUAAAlwXNYejEBE4tdGgEBAQECAQEBA?= =?us-ascii?q?QgBAQEBFQEBAQECAQEBAQgBAQEBgw8BAQEBAX6BDINPinqRM4d/jzIqhXgCgWV?= =?us-ascii?q?CEQEBAQEBAQEBAQEBEgEBCwsLBh8wgjMaAYIaAQEBAwEjHQEBKg0BBAsLDgoCA?= =?us-ascii?q?iYCAiE2BhOIVQMQCAQKrwtogiWDCAEBBYQkDYJWAQEBAQEBBAEBAQEBAQEZAwW?= =?us-ascii?q?BC4c8CIJXgk6BeIJOOi2CMZppOIZZhnWFdogrKIYSigWEK4QlNYFGKQg3EAGCD?= =?us-ascii?q?4IBDxyBYHKIZgEBAQ?= X-IPAS-Result: =?us-ascii?q?A0CUAAAlwXNYejEBE4tdGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBgw8BAQEBAX6BDINPinqRM4d/jzIqhXgCgWVCEQEBAQEBAQEBA?= =?us-ascii?q?QEBEgEBCwsLBh8wgjMaAYIaAQEBAwEjHQEBKg0BBAsLDgoCAiYCAiE2BhOIVQM?= =?us-ascii?q?QCAQKrwtogiWDCAEBBYQkDYJWAQEBAQEBBAEBAQEBAQEZAwWBC4c8CIJXgk6Be?= =?us-ascii?q?IJOOi2CMZppOIZZhnWFdogrKIYSigWEK4QlNYFGKQg3EAGCD4IBDxyBYHKIZgE?= =?us-ascii?q?BAQ?= X-IronPort-AV: E=Sophos;i="5.33,340,1477954800"; d="scan'208";a="208521117" Received: from hera.mpi-klsb.mpg.de ([139.19.1.49]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES128-SHA; 09 Jan 2017 18:04:16 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mpi-sws.org; s=mail200803; h=To:References:Message-Id:Content-Transfer-Encoding:Cc:Date:In-Reply-To:From:Content-Type:Mime-Version:Subject; bh=om3fmwuS3xfmH5Qcp30P2wnMYI0WTAwTXr584GOQUGs=; b=wBCeJ8MKrq1Q4RBnNwmCQYJPgiM5ORzrAuYwpUjkPVjlGafnoIEH74knMAE6mmzsW5pHwiJPKxjoFTVSC4RmjTUgxrgFgD6MrXSQCEVmqao0DNn3qowtFGQllm4mmCyiTsCZrH6oazhP4+pJ3Mkq0MwUDUeYmtz/ag6lcjuFv34=; Received: from sam.mpi-klsb.mpg.de ([139.19.86.26]:44998) by hera.mpi-klsb.mpg.de (envelope-from ) with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) id 1cQdMi-00084u-EX; Mon, 09 Jan 2017 18:04:14 +0100 Received: from 109.125.107.239.dynamic.cablesurf.de ([109.125.107.239]:59005 helo=macbook-air-3.fritz.box) by sam.mpi-klsb.mpg.de (envelope-from ) with esmtpsa (TLS1.0:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) id 1cQdMi-000Rho-6Q; Mon, 09 Jan 2017 18:04:12 +0100 Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=utf-8 From: Andreas Rossberg In-Reply-To: <8637gvdtpj.fsf@gmail.com> Date: Mon, 9 Jan 2017 18:04:12 +0100 Cc: Anton Bachin , Ivan Gotovchits , "caml-list@inria.fr users" Content-Transfer-Encoding: quoted-printable Message-Id: References: <22A97EAF-DBFF-4FE8-90C3-0343533CC621@gmail.com> <3E0A0A1C-BEEE-464C-907E-663038F0DAF6@gmail.com> <8637gvdtpj.fsf@gmail.com> To: Malcolm Matalka X-Mailer: Apple Mail (2.3124) X-MPI-Local-Sender: true Subject: Re: [Caml-list] =?UTF-8?Q?=5BANN=5D_Lwt_2=2E7=2E0_=E2=80=93_monad?= =?UTF-8?Q?ic_promises=3B_concurrent_I/O?= > On Jan 7, 2017, at 11:56 , Malcolm Matalka wrote: >=20 > To add some more terminology to the mix, I have generally seen Future > and Promise being two sides of the same thing. A Future is a read-only > value that can be determined to a value and a Promise is the side that > can be set. The wikipedia entry uses this terminology. >=20 > https://en.wikipedia.org/wiki/Futures_and_promises The history of the future/promise terminology is somewhat confusing. Friedm= an & Wise introduced the concept as promises, Baker & Hewitt (re)named it f= utures (there are only superficial differences). They gained wider populari= ty with Multilisp, which also called them futures. As far as the functional= language space is concerned, that term pretty much stuck. In the imperativ= e/OO space, the term promise became somewhat popular with Liskov & Shrira a= nd their promise pipelining. However, most contemporary mainstream language= s (C++, Java, ...) also use future. As far as I am aware, Alice ML was the first language that had _both_ futur= es and promises and factorised them in the way you cite, where promises are= essentially single assignment variables =E2=80=94 at least I remember that= we iterated on various terminologies for a long time around 99/00 until we= settled on this. I don=E2=80=99t know how the future/promise API in C++ ca= me about, but it arrived at a very similar distinction. So did Scala. All t= hese languages characterise promises by the presence of a resolve/=E2=80=98= fulfill' operator. There is a different distinction being made by e.g. Mark Miller, who charac= terises futures by a (synchronous, blocking) read operation, and promises b= y a (asynchronous, nonblocking) bind operator taking a callback. Personally= , I find this use of terminology rather unintuitive and problematic, since = there is no reason that a blocking future cannot also have a non-blocking b= ind method (and they often do). But it is the reason that JavaScript calls = its notion promise (although there was discussion about that). Arguably, th= ough, it is the odd one out as far as both mainstream and functional langua= ges are concerned. (More generally, I would not recommend using JavaScript as precedent for an= ything regarding its promises, since they are broken in just about every po= ssible way. And I=E2=80=99m saying that as a member of the committee that s= tandardised them=E2=80=A6 :) ) /Andreas