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 E8EB77FB0A for ; Wed, 26 Nov 2014 12:37:58 +0100 (CET) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of asai@is.ocha.ac.jp) identity=pra; client-ip=133.65.64.10; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="asai@is.ocha.ac.jp"; x-sender="asai@is.ocha.ac.jp"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of asai@is.ocha.ac.jp designates 133.65.64.10 as permitted sender) identity=mailfrom; client-ip=133.65.64.10; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="asai@is.ocha.ac.jp"; x-sender="asai@is.ocha.ac.jp"; 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@web.is.ocha.ac.jp) identity=helo; client-ip=133.65.64.10; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="asai@is.ocha.ac.jp"; x-sender="postmaster@web.is.ocha.ac.jp"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnoCAO66dVSFQUAKnGdsb2JhbABbFoNCVwHIH4ZNAoENFgEBAQEBEQEBAQEBCBQJQoQDAQEDARIoOQYFCwshJQ8FIAEFAVeIFQgBBQivDD0xnAmFUAEBAQEBBQEBAQEBHQqQcQcWgxiBHwWMIosmhzMBgTU/kR6CD0GFRWmCSQEBAQ X-IPAS-Result: AnoCAO66dVSFQUAKnGdsb2JhbABbFoNCVwHIH4ZNAoENFgEBAQEBEQEBAQEBCBQJQoQDAQEDARIoOQYFCwshJQ8FIAEFAVeIFQgBBQivDD0xnAmFUAEBAQEBBQEBAQEBHQqQcQcWgxiBHwWMIosmhzMBgTU/kR6CD0GFRWmCSQEBAQ X-IronPort-AV: E=Sophos;i="5.07,462,1413237600"; d="scan'208";a="109672293" Received: from web.is.ocha.ac.jp ([133.65.64.10]) by mail2-smtp-roc.national.inria.fr with ESMTP; 26 Nov 2014 12:37:56 +0100 Received: from mail-pa0-f51.google.com (mail-pa0-f51.google.com [209.85.220.51]) by web.is.ocha.ac.jp (Postfix) with ESMTP id D3B8D99680C for ; Wed, 26 Nov 2014 20:37:35 +0900 (JST) Received: by mail-pa0-f51.google.com with SMTP id ey11so2751431pad.10 for ; Wed, 26 Nov 2014 03:37:53 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=je+Wj2GLTx0/lF2pEW6Pc5AntPklIIDBNccwbalEBak=; b=eyBHPxAAqRdChQgfm5xFpg41zOgyUYCAErWI9narvFsQn3GSv1YZUe6oyrBbSQnwLD 4ooGZqHsp5vAM461OpB4fDVkvARY97Yljvg7gpx3CAQrQ/HsdpMoOhzYZWevYEafjA0a CQy5t6RrxI4y3S75BEv2Em+ChZeb/VkeW5JlGWzW9DBKpU/MejQIKUlFxDCwEIfZBtQZ RXupG2QtwIOM9OBgNmKz3jOFINbubTKkE0tQaPbhqar//ahbhic6QJDgZXJoziQ5WjVP HRCMhS4vd+ePLke5Rhk+Rylq2TULnD3nYHvnjZJwQGN7TKaOPpZVu8HjgbXXtmLP8omd AyTA== X-Gm-Message-State: ALoCoQkszV67KcGxq5dSiYwUpjm/T/2pfNqNeoTQ/5fIuk2Ztx/MZ0nZnKuYWSmU3TlKIIynR0NNsDGvho02u0AMAKSfl4rdTCwdk/q4pvtZTv9CtkMZNBFIWN3v7U0VaWN8LaxXCIsc X-Received: by 10.68.215.67 with SMTP id og3mr51020208pbc.117.1417001873323; Wed, 26 Nov 2014 03:37:53 -0800 (PST) X-Received: by 10.68.215.67 with SMTP id og3mr51020179pbc.117.1417001873096; Wed, 26 Nov 2014 03:37:53 -0800 (PST) Received: from localhost (cb8ae2-064.dynamic.tiki.ne.jp. [203.138.226.64]) by mx.google.com with ESMTPSA id b16sm4068985pdj.76.2014.11.26.03.37.51 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 26 Nov 2014 03:37:52 -0800 (PST) Date: Wed, 26 Nov 2014 20:37:38 +0900 From: Kenichi Asai To: robert.muller2@gmail.com Cc: caml-list@inria.fr Message-ID: <20141126113738.GA29791@pllab.is.ocha.ac.jp> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [Caml-list] teaching OCaml Hi Bob, I have been using OCaml as a teaching language for quite a while. > 1. Error messages: It's difficult to give good type errors for ML but I was > hoping that the state-of-the-art of type error reporting had improved. When my > students receive a type error, they are utterly mystified, Not directly addressing the error messages, but this spring, I used our type debugger for OCaml in the introductory course. By answering questions, it leads you to the source of the type error, with better error messages. With proper instruction, I found that students actually learn how OCaml types work from the interaction with the type debugger. It also introduces a few language levels which are good for novices. http://pllab.is.ocha.ac.jp/~asai/TypeDebugger/ (English error messages are not polished compared to Japanese error messages. Your feedback welcome.) > 2. GUIs: several of my problem sets work with simple graphics (e.g., rendering > tessellations) or animations (e.g., a maze walk or a simplified form of > tetris, or the game "Flow"). We have been hobbling along with the Graphics and > Labltk modules for this but it has been more pain than my students ought to > know. We also have some problem sets that work with audio so I would like > support for that. One of my students is porting the universe teachpack of Racket into OCaml, which enables easy game programming similarly to Racket. I am now encouraging her to make the library public... Sincerely, -- Kenichi Asai