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 13E3882355 for ; Wed, 13 Dec 2017 11:37:25 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=dra-news@metastack.com; spf=Pass smtp.mailfrom=dra-news@metastack.com; spf=None smtp.helo=postmaster@outmail149095.authsmtp.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of dra-news@metastack.com) identity=pra; client-ip=62.13.149.95; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="dra-news@metastack.com"; x-sender="dra-news@metastack.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of dra-news@metastack.com designates 62.13.149.95 as permitted sender) identity=mailfrom; client-ip=62.13.149.95; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="dra-news@metastack.com"; x-sender="dra-news@metastack.com"; 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@outmail149095.authsmtp.com) identity=helo; client-ip=62.13.149.95; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="dra-news@metastack.com"; x-sender="postmaster@outmail149095.authsmtp.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AXRH5FxXMGx5bzLFOWvyyHTdP3QrV8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYbReAt8tkgFKBZ4jH8fUM07OQ7/i5HzRYqb+681k6OKRWUBEEjc?= =?us-ascii?q?hE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRo?= =?us-ascii?q?LerpBIHSk9631+ev8JHPfglEnjWwba9vIBmssQndqtQdjJd/JKo21hbHuGZDdf?= =?us-ascii?q?5MxWNvK1KTnhL86dm18ZV+7SleuO8v+tBZX6nicKs2UbJXDDI9M2Ao/8LrrgXM?= =?us-ascii?q?TRGO5nQHTGoblAdDDhXf4xH7WpfxtTb6tvZ41SKHM8D6Uaw4VDK/5KptVRTmij?= =?us-ascii?q?oINyQh/W/XlMJ+kb5brhyiqRxxwYHUYZ2aOvVxcaPaZt4aWXNBUtpNWyBdHo+w?= =?us-ascii?q?cY0CBPcBM+ZCqIn9okMDoxWkCgmyBePg1yJDi2Py3a0+yOQhFhnG3BQ9FN8JrX?= =?us-ascii?q?vUts/6OL4UUe+rwqjI1i7Ob/ZI1jfh8ofIaQwhruuQUrJza8be1U4vFwbcg1iW?= =?us-ascii?q?tIfrMTSV1uEXvGia6eptTf6vi288qw5tuDevwsYshpPViYIS0FzE6CZ5zJ47JN?= =?us-ascii?q?25S057YMakH4VNuCGbLYR6WMQiQ3tnuCs817YIuoa7cTALxZg53RLTdvKKf5KV?= =?us-ascii?q?7h/sUOudOzN1iXJ9dL6iiBu/8lKsxvP8W8WqylpGszRJn93WunwQyxDe7tCLSv?= =?us-ascii?q?Vj8UqixTqC0gXe5+FLLE02iaXWLpAszaI/m5YNtEnMADL6l1jsg6KTaEor5/Kn?= =?us-ascii?q?5/rhb777vJGTLZV0hRv7Mqk2msywH+A4Mg8WUmic5OS8yLjj8lf4QLVOk/E7na?= =?us-ascii?q?3UvIzeKMkbvKK2GRJV0poj6xakCjemzMwYkWMbI1JCfRKLl4npO1fQL/DkFfqy?= =?us-ascii?q?gkqgnC12y/3IJLHtH5rAI3zZnLrlfbtx80tcxxAyzdBb6ZJUELYBIPfrV0Dsrt?= =?us-ascii?q?zXFAY1MwqqzOfpE9VwzYYeVnyTAqCDK6PSrUWH6f4sI+WWeIAVvzP9J+A/5/Hy?= =?us-ascii?q?lX85hUMdfa6x0JQLcn+4G/BmL1ydYXrtmdcBDXwHvhE+TezvkF2NSyRfZ3e0X6?= =?us-ascii?q?Im5zE0EpiqDYnZRtPlvLvU8Tm0E5tHLkNGEFmJDWzvac3QS+0FbT6JJdFJnTkN?= =?us-ascii?q?VLznQIgkg1Xm/gTzzr4iKuvP5gUZs4ji3Z57/aebwRo78DgxC8WGz0mMSXt1ly?= =?us-ascii?q?UGXWll8rp4pBlRw0mC3eBRh/hDEsRLr6dFSA5/M5PD1MR/Bsz7QR7IddTPQ1Gj?= =?us-ascii?q?FIb1SQotR848loddK312HM+v20jO?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0DMAABhAjFah1+VDT5dGQEBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYJsgTh0JwePEI4SRAEBBoExmSYKI4UYAoUQQxQBAQEBAQEBAQE?= =?us-ascii?q?BEgEBAQoLCQgoL4I4IoJJAQEBAQMnEzECHAIBCA4KHhAyJQIEARIIihMNAQMBC?= =?us-ascii?q?6poOophAQEBAQYBAQEBAQEBAQEBHoNggguBDoQngTWCDIEiAYFHKYNEgjIFima?= =?us-ascii?q?YOYd7jSwMgm2Qb40QiSkCBAsCGoE7NoFwMhojT4IpCYJZgXN4AYd8gTMBgRQBA?= =?us-ascii?q?QE?= X-IPAS-Result: =?us-ascii?q?A0DMAABhAjFah1+VDT5dGQEBAQEBAQEBAQEBAQcBAQEBAYJ?= =?us-ascii?q?sgTh0JwePEI4SRAEBBoExmSYKI4UYAoUQQxQBAQEBAQEBAQEBEgEBAQoLCQgoL?= =?us-ascii?q?4I4IoJJAQEBAQMnEzECHAIBCA4KHhAyJQIEARIIihMNAQMBC6poOophAQEBAQY?= =?us-ascii?q?BAQEBAQEBAQEBHoNggguBDoQngTWCDIEiAYFHKYNEgjIFimaYOYd7jSwMgm2Qb?= =?us-ascii?q?40QiSkCBAsCGoE7NoFwMhojT4IpCYJZgXN4AYd8gTMBgRQBAQE?= X-IronPort-AV: E=Sophos;i="5.45,397,1508796000"; d="scan'208";a="248207122" Received: from outmail149095.authsmtp.com ([62.13.149.95]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Dec 2017 11:37:23 +0100 Received: from mail-c247.authsmtp.com (mail-c247.authsmtp.com [62.13.128.247]) by punt22.authsmtp.com. (8.15.2/8.15.2) with ESMTP id vBDAbMmJ074428; Wed, 13 Dec 2017 10:37:22 GMT (envelope-from dra-news@metastack.com) Received: from romulus.metastack.com (114.212-105-213.static.virginmediabusiness.co.uk [213.105.212.114]) (authenticated bits=0) by mail.authsmtp.com (8.15.2/8.15.2) with ESMTPSA id vBDAbK7r078424 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 13 Dec 2017 10:37:22 GMT (envelope-from dra-news@metastack.com) Received: from remus.metastack.local (remus.metastack.com [172.16.0.1]) by romulus.metastack.com (8.14.2/8.14.2) with ESMTP id vBDAbKdt004409; Wed, 13 Dec 2017 10:37:20 GMT Received: from Remus.metastack.local ([fe80::547c:3c42:e1da:eda2]) by Remus.metastack.local ([fe80::547c:3c42:e1da:eda2%10]) with mapi id 14.03.0361.001; Wed, 13 Dec 2017 10:37:21 +0000 From: David Allsopp To: Evgeny Khramtsov , "caml-list@inria.fr" Thread-Topic: [Caml-list] ReasonML concrete syntax Thread-Index: AQHTceJwk1egn+3DGEW/8zHefWsjzqM+ODIAgAAZIwCAACdBAIACepCAgAASFQCAAA1msA== Date: Wed, 13 Dec 2017 10:37:20 +0000 Message-ID: References: <6640cb32-fec3-e048-3f40-53d65bae5305@gerd-stolpmann.de> <20171211161024.kafvtxzq3qcoo46p@matica.foolinux.mooo.com> <131064f1-4d53-5fbc-8aa7-0f6210dcb7bd@irisa.fr> <20171213122648.298e7edd@zinid.ru> In-Reply-To: <20171213122648.298e7edd@zinid.ru> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [148.252.129.109] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Organization: MetaStack Solutions Ltd. X-Scanned-By: MIMEDefang 2.65 on 172.16.0.20 X-Server-Quench: 9a179a78-dff1-11e7-8106-0015176ca198 X-AuthReport-Spam: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-AuthRoute: OCd1ZAARAlZZVg1f DC4bFwdFRBksPQFF ChxFJgxfNl8UURhQ KkJXbgASJgRHAn1U UHkJW1VTQFxxU2By YQhTIwdcYVRPXwB0 UklLXFNTEBpqBAMA SFhsJmggDAIEeHl4 YURmEHdbW0Q0fBd8 RUcFEmUbMTE2aX0e URVfagtVcAVXfh9E b1F4UiBcYGwPKBgV TUcAFDk0OXBbKT9J d0k3IFsJRkAuOnY3 QBYJBzgzEAUeViMv JgxO X-Authentic-SMTP: 61633634383431.1038:706 X-AuthFastPath: 0 (Was 255) X-AuthSMTP-Origin: 213.105.212.114/25 X-AuthVirus-Status: No virus detected - but ensure you scan with your own anti-virus system. Subject: RE: [Caml-list] ReasonML concrete syntax Evgeny Khramtsov wrote: > Wed, 13 Dec 2017 09:22:05 +0100 > Sebastien Ferre wrote: >=20 > > They have two notations, f(x,y) and f(x)(y), the latter being the > > curryfied version allowing partial application. >=20 > This is too complex for JavaScript developers. Speaking as (I think) OCaml's only Windows-by-preference core developer, a = sometime viola player[1], a countertenor[2], a sometime "expert" Visual Bas= ic developer, one who has written quite a lot of ML and quite a lot of non-= trivial JavaScript, and probably holder of many other oft-insulted categori= es, may I observe that in the archives of these threads, it's rare that the= ones hurling the insults paint the greatest pictures of either their argum= ents or themselves... One of the many differences between the Standard ML basis library and OCaml= 's stdlib which I find interesting is that SML typically eschews currying u= nless it's clearly beneficial, preferring signatures like 'a * 'b -> 'c unl= ess 'a -> 'b -> 'c is clearly useful. Standard ML also has stricter rules o= n the parentheses for tuples, of course. In terms of why you might want to be "hiding" currying, or at least making = it need less immediate explanation when learning the language, consider, fo= r example, explaining the difference between: let f x y =3D print_int x; print_int y in f 42 and let f x =3D print_int x; print_int in f 42 (I'm guessing with its web-based heritage that Reason programming involves = a few side-effects) >From my limited experience of teaching beginners to ML - both those who hav= e programmed and those who haven't - I'd say that currying is probably one = of the concepts requiring the most explanation; certainly much more than ca= ll-by-value vs lazy, or even immutable values. I can certainly see why the = Reason team are doing so much to try to make it seem more familiar. David [1] https://en.wikipedia.org/wiki/Viola_jokes [2] http://myweb.tiscali.co.uk/stnicolaschurch/mus-altos.html