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 969947EEEF for ; Mon, 22 Jun 2015 19:04:13 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of daniel.buenzli@erratique.ch) identity=pra; client-ip=74.55.86.74; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="daniel.buenzli@erratique.ch"; x-sender="daniel.buenzli@erratique.ch"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of daniel.buenzli@erratique.ch) identity=mailfrom; client-ip=74.55.86.74; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="daniel.buenzli@erratique.ch"; x-sender="daniel.buenzli@erratique.ch"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@smtp.webfaction.com) identity=helo; client-ip=74.55.86.74; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="daniel.buenzli@erratique.ch"; x-sender="postmaster@smtp.webfaction.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AOAQChP4hVm0pWN0pch2HCVQKCBgEBAQEBARIBAQEBAQgJCwkhLoQjAQEEI1YQCxoCJgICRxAGG4gntEaWFgEBCAEBAQEegSGKJIRTMweCaC+BFAWTfZNxD49/hCCDNgEBAQ X-IPAS-Result: A0AOAQChP4hVm0pWN0pch2HCVQKCBgEBAQEBARIBAQEBAQgJCwkhLoQjAQEEI1YQCxoCJgICRxAGG4gntEaWFgEBCAEBAQEegSGKJIRTMweCaC+BFAWTfZNxD49/hCCDNgEBAQ X-IronPort-AV: E=Sophos;i="5.13,660,1427752800"; d="scan'208";a="166692549" Received: from mail6.webfaction.com (HELO smtp.webfaction.com) ([74.55.86.74]) by mail2-smtp-roc.national.inria.fr with ESMTP; 22 Jun 2015 19:04:12 +0200 Received: from [172.17.24.98] (global-1-18.nat.csx.cam.ac.uk [131.111.184.18]) by smtp.webfaction.com (Postfix) with ESMTP id 7560520F5035; Mon, 22 Jun 2015 17:04:11 +0000 (UTC) Date: Mon, 22 Jun 2015 18:04:09 +0100 From: =?utf-8?Q?Daniel_B=C3=BCnzli?= To: Alan Schmitt Cc: OCaml Mailing List Message-ID: <4E69EBE143614C6E89109247275F03DA@erratique.ch> In-Reply-To: References: X-Mailer: sparrow 1.6.4 (build 1178) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Subject: Re: [Caml-list] use of ";;" when teaching Ocaml Le lundi, 22 juin 2015 =C3=A0 14:31, Alan Schmitt a =C3=A9crit : > I am now wondering if this is a good practice. In a nutshell, would you > rather use >=20=20 > #+begin_src ocaml > let x =3D 12;; > print_endline "Hello World!" > #+end_src >=20=20 > or >=20=20 > #+begin_src ocaml > let x =3D 12 > let () =3D print_endline "Hello World!" > #+end_src >=20=20 > when teaching Ocaml? =20=20 Leaving the ;; polemic aside (which you can also write in the second form i= f you want to), I would definitively teach the second form as OCaml's defau= lt set of warnings don't warn you about potential partial applications on t= he lines of the first form. This can lead to puzzling "nothing happens" bug= s, especially for a new commer. For example:=20=20 output_string stdout;; compiles without a hitch =E2=80=94 that's also why it should be, as you rig= htly propose, `let () =3D =E2=80=A6` and not `let _ =3D =E2=80=A6` Best, Daniel