From: Christopher Allan Webber <cwebber@dustycloud.org>
To: guile-devel <guile-devel@gnu.org>
Subject: Ideas for a Guile tutorial to go with the new site
Date: Sun, 18 Oct 2015 10:41:38 -0500 [thread overview]
Message-ID: <87k2qkjh74.fsf@dustycloud.org> (raw)
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?
next reply other threads:[~2015-10-18 15:41 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-18 15:41 Christopher Allan Webber [this message]
2015-10-18 16:45 ` Ideas for a Guile tutorial to go with the new site Taylan Ulrich Bayırlı/Kammer
2015-10-18 18:44 ` Luis Felipe López Acevedo
2015-10-18 19:26 ` Amirouche Boubekki
2015-10-19 16:29 ` Christopher Allan Webber
2015-10-20 22:45 ` BCG
2015-10-21 15:01 ` Christopher Allan Webber
2015-10-27 15:17 ` Luis Felipe López Acevedo
2015-10-30 15:41 ` Christopher Allan Webber
2015-11-19 20:24 ` Ludovic Courtès
2015-11-19 21:28 ` Christopher Allan Webber
2015-11-19 21:12 ` Mathieu Lirzin
2015-11-19 21:27 ` Christopher Allan Webber
2015-12-15 20:28 ` Christopher Allan Webber
2015-12-15 20:31 ` Christopher Allan Webber
2015-12-16 10:35 ` Alex Sassmannshausen
2015-12-16 14:33 ` Christopher Allan Webber
2015-12-17 2:41 ` Mike Gerwitz
2015-12-17 6:21 ` Christopher Allan Webber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k2qkjh74.fsf@dustycloud.org \
--to=cwebber@dustycloud.org \
--cc=guile-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).