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 mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 53F057EE80 for ; Thu, 21 Mar 2013 21:58:36 +0100 (CET) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of yminsky@janestreet.com) identity=pra; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of yminsky@janestreet.com designates 38.105.200.229 as permitted sender) identity=mailfrom; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; 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@tot-dmz-mxout1.janestreet.com) identity=helo; client-ip=38.105.200.229; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="postmaster@tot-dmz-mxout1.janestreet.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqMAAB50S1EmacjlmWdsb2JhbABDxU6BVB4OAQEBAQEICwsHFCiCJAEBBAFAAQE3AQQLCwsNLiISAQUBHBkIiAYGA6QqinKEOwEFjlsGjxEHFoMqlmeFfYkjFimESQ X-IPAS-Result: AqMAAB50S1EmacjlmWdsb2JhbABDxU6BVB4OAQEBAQEICwsHFCiCJAEBBAFAAQE3AQQLCwsNLiISAQUBHBkIiAYGA6QqinKEOwEFjlsGjxEHFoMqlmeFfYkjFimESQ X-IronPort-AV: E=Sophos;i="4.84,888,1355094000"; d="scan'208";a="8736870" Received: from mx5.janestreet.com (HELO tot-dmz-mxout1.janestreet.com) ([38.105.200.229]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 21 Mar 2013 21:58:35 +0100 Received: from [172.27.22.15] (helo=tot-smtp) by tot-dmz-mxout1.janestreet.com with esmtp (Exim 4.76) (envelope-from ) id 1UImZF-000104-Ku for caml-list@inria.fr; Thu, 21 Mar 2013 16:58:33 -0400 Received: from tot-dmz-mxgoog1.delacy.com ([172.27.224.14] helo=mxgoog2.janestreet.com) by tot-smtp with esmtps (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1UImZF-0000G8-K5 for caml-list@inria.fr; Thu, 21 Mar 2013 16:58:33 -0400 Received: from mail-ea0-f199.google.com ([209.85.215.199]) by mxgoog2.janestreet.com with esmtp (Exim 4.76) (envelope-from ) id 1UImZF-0004en-Fq for caml-list@inria.fr; Thu, 21 Mar 2013 16:58:33 -0400 Received: by mail-ea0-f199.google.com with SMTP id b15so3808172eae.6 for ; Thu, 21 Mar 2013 13:58:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=google; h=x-received:mime-version:x-received:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=LR0cVNphhrshsznTzdRBjguuhUSqscfl+2du+IlF3F8=; b=bawrF0+X9/3bvxb9RisnkBlnkJsN47FtG8+tK2XRE63UC8+bsCFcYh4WyV2OuvO9Rb FJK1JAFXDr8bZsxtvZeoyqYDeiXCsAoANqayWKju6+Apn+69jiscWX+nQQNRduGX+Kjt 0oppXJIvHhbHF5QwVRNPo/mqnnoIQFiP9rYkY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:mime-version:x-received:in-reply-to:references:date :message-id:subject:from:to:cc:content-type:x-gm-message-state; bh=LR0cVNphhrshsznTzdRBjguuhUSqscfl+2du+IlF3F8=; b=A4QhauLdibZnhFToe2RK3BpQARbCAzxv2y13GFsBlHGwkEJ5fnyCETsPX5s6d5yGGJ JpZ4FKyxQY7xtr4Bd1kaSZsPT0iIvfbS2qXahDykUr2pnBwI6y0Z++5mX/bePs8BC/+q Za8Ov03wRhwstxS7v7E6CV3PT+doGngu8V+qX0ZrQE5imgtbP6uRh8zu5y/woSa51Aks rEXPaisgW0QcDCeK9Lgt3lQInr5QCAgdaSqyWAXblZgyo/akl2ycxm+yINFKqAKkJJcf iadTaJ8RYlv7tg/7zMz+fpJG60Ttp+7MgGveB/ZEGgLU3DAa2I5270HZIfLfb880Z24z I9Tg== X-Received: by 10.14.215.193 with SMTP id e41mr86591489eep.32.1363899512913; Thu, 21 Mar 2013 13:58:32 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.14.215.193 with SMTP id e41mr86591472eep.32.1363899512810; Thu, 21 Mar 2013 13:58:32 -0700 (PDT) Received: by 10.223.66.205 with HTTP; Thu, 21 Mar 2013 13:58:32 -0700 (PDT) In-Reply-To: <06b901ce25ca$cc415be0$64c413a0$@ffconsultancy.com> References: <878v5lca2c.fsf@li195-236.members.linode.com> <9813208.KJBpLPkkvX@groupon> <069c01ce25ab$a9cf3f10$fd6dbd30$@ffconsultancy.com> <06b901ce25ca$cc415be0$64c413a0$@ffconsultancy.com> Date: Thu, 21 Mar 2013 16:58:32 -0400 Message-ID: From: Yaron Minsky To: jon@ffconsultancy.com Cc: caml-list@inria.fr Content-Type: text/plain; charset=ISO-8859-1 X-Gm-Message-State: ALoCoQnmQ9hCtQPxP5HsyGIzBJpn4M2QVI/SPQ9hrac1XPbee1uq3r9EXLRAGF17d/56X89N6GN8hmaMvYVhDEWELZFaty4E6C/CbrZlQL04Ja2ueZsdcZPG/PV6swujFeA2mFRw8v/i3Lm4MCGlelmvqMCZAClt2Q== Subject: Re: [Caml-list] Re: Haskell vs OCaml On Wed, Mar 20, 2013 at 8:26 PM, Jon Harrop wrote: > Yaron wrote: >> I don't think OCaml is unfriendly to commercial users > > I meant that few people buy or sell commercial OCaml code compared to .NET, > particularly when the target market is OCaml programmers themselves. I agree, I would not recommend basing a business on selling OCaml code to programmers. > We tried with products like Smoke and Presenta but hit problems that > don't exist on alternatives like .NET. Smoke was made difficult by a > combinatorial explosion with brittle bindings that required us to > recompile and re-release for every minor version increment of either > OCaml itself or LablGL. In essence, OCaml bytecode was not designed > to be redistributable. We were forced to drop Presenta when we found > that around 80% of beta testers experienced segmentation faults even > though it was 100% pure OCaml code. In contrast, the same code > ported to F# has hundreds of commercial users and we've never had a > single report of unreliability. > >> OCaml is highly productive, and it greatly simplifies the task of >> building efficient, reliable and above all correct code > > Although I often found that to be true there were several important > kinds of applications where OCaml fell short on some of those > metrics for me. > > One obvious one is GUI programming where I found OCaml+LablGTK to be > anything but highly productive. F# is much more productive and > reliable when it comes to GUIs (although performance is a problem > with WPF). > > OCaml is very efficient for most symbolic code but there are lots of > examples where there is significant room for improvement > (polymorphism, recursive lambdas, that weird +. 0.0 thing, static > optimization of % by a constant, unboxing types like complex > numbers, hash tables, deep recursion, large arrays of reference > types, CSE). Some of those will be fixed, as you say, but many of > the core ones will not. As I said, OCaml's performance is already excellent for our purposes, and getting better. The CLR and JVM also have their performance warts, for sure. I'd be careful about pointing at any single limitation and saying "that won't get fixed". There's an energetic and talented crew attacking all sorts of problems, and I expect they'll go far. > Presenta is obviously a counter-example for reliability. 100% OCaml > code isn't supposed to be able to segfault...