From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Amirouche Boubekki Newsgroups: gmane.lisp.guile.devel Subject: Re: Ideas for a Guile tutorial to go with the new site Date: Sun, 18 Oct 2015 21:26:13 +0200 Message-ID: <99386b9819329acfaad40d03deef0892@hypermove.net> References: <87k2qkjh74.fsf@dustycloud.org> <69725d37e4da310143317b42e5cb35b1@openmailbox.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1445196400 16438 80.91.229.3 (18 Oct 2015 19:26:40 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 18 Oct 2015 19:26:40 +0000 (UTC) Cc: guile-devel-bounces+amirouche+dev=hypermove.net@gnu.org, guile-devel To: =?UTF-8?Q?Luis_Felipe_L=C3=B3pez_Acevedo?= Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sun Oct 18 21:26:30 2015 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ZntbB-00079Y-Fz for guile-devel@m.gmane.org; Sun, 18 Oct 2015 21:26:29 +0200 Original-Received: from localhost ([::1]:35292 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZntbA-0006j6-DS for guile-devel@m.gmane.org; Sun, 18 Oct 2015 15:26:28 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:46582) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zntb6-0006iw-1I for guile-devel@gnu.org; Sun, 18 Oct 2015 15:26:25 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zntb4-0003Ip-KE for guile-devel@gnu.org; Sun, 18 Oct 2015 15:26:23 -0400 Original-Received: from relay2-d.mail.gandi.net ([217.70.183.194]:37782) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zntaz-0003IT-Oa; Sun, 18 Oct 2015 15:26:17 -0400 Original-Received: from mfilter34-d.gandi.net (mfilter34-d.gandi.net [217.70.178.165]) by relay2-d.mail.gandi.net (Postfix) with ESMTP id 574CEC5A44; Sun, 18 Oct 2015 21:26:15 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter34-d.gandi.net Original-Received: from relay2-d.mail.gandi.net ([IPv6:::ffff:217.70.183.194]) by mfilter34-d.gandi.net (mfilter34-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id KBg0eLEaVC3K; Sun, 18 Oct 2015 21:26:13 +0200 (CEST) X-Originating-IP: 10.58.1.146 Original-Received: from webmail.gandi.net (unknown [10.58.1.146]) (Authenticated sender: amirouche@hypermove.net) by relay2-d.mail.gandi.net (Postfix) with ESMTPA id 945C7C5A40; Sun, 18 Oct 2015 21:26:13 +0200 (CEST) In-Reply-To: <69725d37e4da310143317b42e5cb35b1@openmailbox.org> X-Sender: amirouche@hypermove.net User-Agent: Roundcube Webmail/1.1.2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 217.70.183.194 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:17938 Archived-At: Le 2015-10-18 20:44, Luis Felipe López Acevedo a écrit : > On 2015-10-18 10:41, Christopher Allan Webber wrote: >> Hello! >> >> So I've been thinking a bit about what a friendly "intro" tutorial >> would >> look like that could fit with the direction the site is heading. I >> came >> up with some ideas I wanted to capture before I totally lost them. >> >> I think we can keep with the kids playing with robot toys idea and >> stretch that a bit. Here's a brief outline: >> >> >> - Intro >> - Getting up and running >> (picture of one of those robots with a wind-up-toy-key on its >> back?) >> + How to start guile from the command line, add readline support >> + Editor setup, simple >> >> Details how to write some scheme with any editor, maybe makes a >> free software editor recommendation of something simple that's >> not >> too hard to get going with Scheme. Would GEdit work? >> >> Shows how to write a file and then import it at the REPL, >> then reload it as you add things. >> >> Teaches the basic idea of writing code in a file + playing at the >> REPL. >> >> + Editor setup, advanced: Emacs + Geiser >> >> Explains that this is the advanced, but recommended version. >> It takes some time to get started with if you are not already an >> emacs user, but you may want to come back to it later. Explains >> how to set things up. >> >> - First steps >> >> Much like The Little Schemer uses food as variable names, I think >> it's a good idea to stick with abstract fun concepts. Here, I >> think >> it would be great to continue along with the "Guile is a >> playground, >> come play!" idea by using toys as variable names, and defining >> procedures that evoke nostalgia for older programmers and sound >> playful for younger ones. >> >> Some ideas: >> + could use building lists as putting toys in and out of a toy >> chest >> >> (define toy-chest '(robot teddy-bear doll-with-comb >> toy-soldier)) >> >> + could have a simple-bake-oven set of procedures that takes >> arguments like flavor and dessert-type: >> >> #> (define (simple-bake-oven flavor dessert-type) >> (format #f "Yum! You made a tasty ~a flavored ~a!" >> flavor dessert-type)) >> #> (simple-bake-oven "banana" "cake") >> $20 = "Yum! You made a tasty banana flavored cake!" >> >> and then we can increase the advanced features a bit: >> >> #> (define* (fancy-bake-oven flavor dessert-type >> #:optional topping) >> (if topping >> (format #f "Yum! You made a tasty ~a flavored ~a >> covered in ~a!" >> flavor dessert-type topping) >> (format #f "Yum! You made a tasty ~a flavored ~a!" >> flavor dessert-type))) >> #> (fancy-bake-oven "mint" "ice cream" "chocolate fudge") >> $21 = "Yum! You made a tasty mint flavored ice cream covered >> in chocolate fudge!" >> >> Yes... the fancy bake oven version is so fancy it can even bake >> ice cream! ;) >> >> + Introduce modules as extensions for our robots. >> >> I'm sure there are other things! But I think a tutorial in this style >> might be fun, and would fit the site well. And the desire for a good >> tutorial has been expressed many times. >> >> What do others think? > > Absolutely. This is in line with my thoughts about the intro tutorial. To the contrary I think it's not a good idea to start upfront the tutorial with which editor should be used is a good way to loose half of the readers, because they will feel more uncomfortable and not up to the task. To be useful emacs requires one 'Getting Started' tutorial in itself. Or anykind of setup for that matter. The tutorial should go as quickly as possible to the matter and start with coding. I started a tutorial at http://hypermove.net/. I don't introduce readline until the user knows what the REPL is. Part 1 is all done in REPL. I subtly introduce emacs as a good choice for an editor in part 2 which is done in an editor. But doesn't enforce it. I don't think my tutorial is perfect, far away that idea is. I'll rewrite the tutorial to avoid any allusion to the Earth Software System and instead use The Little Lost Robot as storyline. > The "Getting up and running" section looks like a good part to start > materializing the tutorial. I sent a previous mail to the ML describing my work. Again feel free to comment.