From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id A856482355 for ; Mon, 11 Dec 2017 18:11:23 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=davidb@davidb.org; spf=Pass smtp.mailfrom=davidb@davidb.org; spf=None smtp.helo=postmaster@mail-it0-f41.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of davidb@davidb.org) identity=pra; client-ip=209.85.214.41; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="davidb@davidb.org"; x-sender="davidb@davidb.org"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of davidb@davidb.org designates 209.85.214.41 as permitted sender) identity=mailfrom; client-ip=209.85.214.41; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="davidb@davidb.org"; x-sender="davidb@davidb.org"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-it0-f41.google.com) identity=helo; client-ip=209.85.214.41; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="davidb@davidb.org"; x-sender="postmaster@mail-it0-f41.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AnnlmDRMsTcilQmwqpNYl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0K/X7rarrMEGX3/hxlliBBdydsK0UzbeO+4nbGkU+or+5+EgYd5JNUxJXwe?= =?us-ascii?q?43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6aijSI4DUTAhTyMxZu?= =?us-ascii?q?bqSwQ9aKzpf/6+fnypTMah8ArT+8Z/smPRyppB+Xv8wXh6NtL68wzl3CpX4eKM?= =?us-ascii?q?pMwmY9CVuNnhq0zN2345grpyhZpfMt/eZMWLv7c65+SqZXWmd1e1sp7dHm4EGQ?= =?us-ascii?q?BTCE4WERByBPykJF?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0B1AQD3ui5afynWVdFbGgEBAQEBAgEBA?= =?us-ascii?q?QEIAQEBAYJsglOdIYF9mSEKhTsChHJDFAEBAQEBAQEBAQESAQEJCwsIJjGCOAU?= =?us-ascii?q?BHgEFgkEDAzgCBgEBKwwBDwshJQ8FIAEFAQIgKIoTAZtTQIsigxWDCQEBBYdUA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEZCAkBCINWgTZVVIEChRSIZYIykyiPbpUUDYIWhhK?= =?us-ascii?q?DWIdjljECBAIEBQIGFCSBFzaBcTIaCCgIOoIpgkOCMliIBoFZAQEB?= X-IPAS-Result: =?us-ascii?q?A0B1AQD3ui5afynWVdFbGgEBAQEBAgEBAQEIAQEBAYJsglO?= =?us-ascii?q?dIYF9mSEKhTsChHJDFAEBAQEBAQEBAQESAQEJCwsIJjGCOAUBHgEFgkEDAzgCB?= =?us-ascii?q?gEBKwwBDwshJQ8FIAEFAQIgKIoTAZtTQIsigxWDCQEBBYdUAQEBAQEBAQEBAQE?= =?us-ascii?q?BAQEBAQEZCAkBCINWgTZVVIEChRSIZYIykyiPbpUUDYIWhhKDWIdjljECBAIEB?= =?us-ascii?q?QIGFCSBFzaBcTIaCCgIOoIpgkOCMliIBoFZAQEB?= X-IronPort-AV: E=Sophos;i="5.45,392,1508796000"; d="scan'208";a="304974404" Received: from mail-it0-f41.google.com ([209.85.214.41]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 11 Dec 2017 18:11:22 +0100 Received: by mail-it0-f41.google.com with SMTP id d16so17483732itj.1 for ; Mon, 11 Dec 2017 09:11:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=davidb.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=Up8uwd1AtIxp77sCWCKN7nyWOkN2t1U4cvfiSqL4Hfc=; b=OLIMMBZjGuxPYfcBNaNcUQWg6Z6Q/CLhGJw+ZpjDxmH4Gti9yFSANSTA/2v/z7Zcb+ beEdINoUxp2zQMvfbvXeX4dVdl66wGf5I3i8nyN0YyFUTmOpld5rMOi7bDxXZpCNlFsS 4+dmMUeXYYGuMKFa2pBb481nNLrMbaEwlI++8g6p7iIqURpWhW1AEVkMi7Knlm1XuqpX cT+E/7t4/ZDepxwWO2z4rXXSdhZsZNRY1ZflhHQPx/UKHVGOWMZPiHwZ79IhmU8p1T3O xLKVBW4lzyCNHdrpyKEu4R/N6io6284PKLehVDzFSj84KrBUVzvpcRTzirv2CTkI4wjQ JTbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Up8uwd1AtIxp77sCWCKN7nyWOkN2t1U4cvfiSqL4Hfc=; b=WZCsqpH5MB6XnQWYs7WBccl4t20pnVSGp+ai7XxOwR2KDLspLmtJUst6GtJzyodVbo cp+bCE5tcASw1ZCNmWLB5E4m3AWf0FehshAe/ZeI/R4PxPrDaE7N4UqKvM78K/VlrxND Sl14EIecePTBiHQ8llhT7bOKdmvHlo1svSDXpxs3s6YvbuTAEE4+8bG0odsc0ct8GC2O OeFiAzQOYmD8FfdiOFaPvToVY78PcbLNPRTLy1yG1xhH0zZ5aasaoGdcVr9v1GOU86KJ oAE+7uyrbzaAZUiUpzlqt7u3HheSlcuizAJIuW2QOP0FAOAk9Etx/zveb/iqGpxj8IsE nRqg== X-Gm-Message-State: AKGB3mJHTlaJR3a8YazaM1W28Vwl8lXSeWE1uY3U9rbk1x/PVCnEhtfk rWBSTuhUVwMvbpFOuoAQnnvxmg== X-Google-Smtp-Source: ACJfBov3X5IskKiQmm7E5awGaSHC2St5Tm4tpKdGL+WUhTWBgiLUddbPcekNbkVQnVtd8YWPBmnhQQ== X-Received: by 10.107.142.72 with SMTP id q69mr1368233iod.205.1513012280562; Mon, 11 Dec 2017 09:11:20 -0800 (PST) Received: from davidb.org ([2601:283:4300:afc2::9]) by smtp.gmail.com with ESMTPSA id k19sm6420772ioc.75.2017.12.11.09.11.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 Dec 2017 09:11:20 -0800 (PST) Date: Mon, 11 Dec 2017 10:11:18 -0700 From: David Brown To: Yawar Amin Cc: Sven SAULEAU , caml-list@inria.fr Message-ID: <20171211171118.GA24847@davidb.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.7.2 (2016-11-26) X-Validation-by: davidb@davidb.org Subject: Re: [Caml-list] ReasonML concrete syntax On Mon, Dec 11, 2017 at 10:51:57AM -0500, Yawar Amin wrote: >By the way, to the people calling the syntax ugly and its users idiots, please >tone yourselves down and think about why OCaml has been around in a niche for >20 years but Rust took off in less than five. I think this is deeper than just syntax. Rust has had the advantage of being able to learn from everything that happened with languages in the interim (both good and bad). Although, I do think I'm a lot less bothered by syntax differences than many other programmers are, I do remember a distinct learning period with Ocaml that was essentially how to write various constructs in its syntax. I know of several other developers that came away from an Ocaml experience with a bad taste, just because of the syntax. But, I do think there are a few things Rust has gotten right that have contributed to its taking off: - The cargo "culture". Somehow, they managed to get the development of properly-versioned, well-encapsulated packages (crates) to be part of the culture of the language. Starting with the "cargo" tool really helped this a lot. - Tied to this, management of the namespace of packages. Every crate lives in its own namespace, and the imports between the crates are explicit (and don't have to be the same for a given dependency). This allows conflicting dependencies to be resolved by just bringing in both versions. (The language's strong distaste of global mutables helps this as well). The first is kind of a hard thing to bring to an existing language culture, although I think Ocaml is doing a pretty good job with this. The second is a problem I've run into with Ocaml. The ML basis system handles this quite well, so this is clearly something that can easily be handled in a language like Ocaml, but it would be challenging to change the way modules and namespaces work without significantly breaking existing code. Personally, I've been doing a lot of Rust programming recently, because it is a reasonable language, and there are likely crates. I do wish I had something, though, with garbage collection, and a strong type system, and would really love to see Ocaml (or something derived from it) fit this. A vast majority of the code I write does not need the complexity of the memory management and borrow checker from Rust, but I want the rest of the infrastructure around the language. David