caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Edgar Friendly <thelema314@gmail.com>
To: Brian Hurt <bhurt@janestcapital.com>
Cc: Chung-chieh Shan <ccshan@post.harvard.edu>, caml-list@inria.fr
Subject: Re: [Caml-list] Re: Which syntax to teach ?
Date: Tue, 30 Oct 2007 12:08:16 -0500	[thread overview]
Message-ID: <47276500.3050501@gmail.com> (raw)
In-Reply-To: <47275E10.4070705@janestcapital.com>

Brian Hurt wrote:
> Chung-chieh Shan wrote:
> 
>> Any tips on how (and perhaps how not) to teach functors?  I'm using a
>> Haskell equivalent of functors (namely constructor classes) in an AI
>> class (!) and they seem to be mysterious.  It didn't seem to work to
>> explain the Java/C# code that I would like to write (but can't, because
>> these languages have no interface _on_ generics (as opposed to generic
>> interfaces)).
>>
> Not sure how well this would work, but my idea would be to map the
> concepts onto the standard code concepts.
> 
<SNIP>
> and so on.  Functors, then, are a way to manipulate modules, in the same
> way that functions are a way to manipulate values.
> 
> Brian
> 
> 
That's more or less how I think of them.  Functions can be written with
"holes" to fill in with their parameters.  In the same way, modules can
have these "empty puzzle-spaces" that, once you fit the right kind of
puzzle piece (module of the right type), you can plug it in (apply the
functor) to get a full module.  Sort of like how you can do partial
application with functions to get exactly the function you want.  i.e.

let sum_int = fold_left (+) 0

Functors/generics fill a much bigger hole in other languages, because in
Ocaml it's possible to pass each piece of the parameter module to each
of the contained functional values, and because of polymorphic
functions, we don't need functors to abstract over types as much.  I
guess you could teach it like extra arguments to every function in your
functor, I don't know if that'd help your students.

E.


  parent reply	other threads:[~2007-10-30 17:08 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-24 11:36 David Teller
2007-10-24 13:18 ` [Caml-list] " Loup Vaillant
2007-10-24 13:24 ` Peng Zang
2007-10-24 13:54   ` Julien Moutinho
2007-10-24 17:23 ` Andrej Bauer
2007-10-24 19:05   ` Adrien
2007-10-25  5:14     ` Aleks Bromfield
2007-10-30 16:26     ` Chung-chieh Shan
2007-10-30 16:38       ` [Caml-list] " Brian Hurt
2007-10-30 16:59         ` Chung-chieh Shan
2007-10-30 17:08         ` Edgar Friendly [this message]
2007-10-30 17:56           ` [Caml-list] " skaller
2007-10-30 19:02             ` Vincent Aravantinos
2007-10-30 18:50           ` William D. Neumann
2007-10-30 21:45           ` Eliot Handelman
2007-10-30 18:56       ` Daniel Bünzli
2007-10-25  9:43   ` [Caml-list] " Richard Jones
2007-10-24 22:52 ` Nathaniel Gray
2007-10-24 23:10   ` Jon Harrop
2007-10-25  1:48     ` skaller
2007-10-25  2:02       ` Jon Harrop
2007-10-25  9:49       ` Richard Jones
2007-10-25 11:32         ` Stefano Zacchiroli
2007-10-25 11:52           ` Daniel Bünzli
2007-10-25 12:39           ` Richard Jones
2007-10-25 12:59         ` Michael Ekstrand
2007-10-25 13:39           ` Loup Vaillant
2007-10-25 20:32             ` Andrej Bauer
2007-10-25 22:11               ` Loup Vaillant
2007-10-25 15:14           ` Richard Jones
2007-10-25 18:47             ` Re : " Adrien
2007-11-02 16:08       ` Nathaniel Gray
2007-10-26 11:11     ` David Teller
2007-10-24 23:02 ` Jon Harrop
2007-10-26 11:09   ` David Teller

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47276500.3050501@gmail.com \
    --to=thelema314@gmail.com \
    --cc=bhurt@janestcapital.com \
    --cc=caml-list@inria.fr \
    --cc=ccshan@post.harvard.edu \
    /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 NNTP newsgroup(s).