caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: David Teller <David.Teller@univ-orleans.fr>
To: OCaml <caml-list@inria.fr>
Subject: Idea for an open-source project
Date: Wed, 31 Oct 2007 13:47:23 +0100	[thread overview]
Message-ID: <1193834843.6677.39.camel@Blefuscu> (raw)

     Hi everyone,

 I've had an idea for a potentially useful project, but no time or
manpower to put on that idea, so here it is, in case anyone is
interested.

 In a few words: a beginner-oriented environment to build OCaml programs
only by clicking and dragging stuff around, with real-time type checking
to prevent connecting stuff when types don't match. For people aware of
Pure Data [1] or Scratch [2], well, this would essentially be a
functional version of either.

 Let me detail the idea a bit more. The IDE looks like a vector-drawing
program, with a number of building blocks available for use in the
toolbar. Each block is actually either one function or one control flow
statement. Blocks may have holes on the top (one for each argument), on
the bottom (one for each return value) or in the inside (one for each
other block it may contain). Each hole has a name, which is often not
displayed. Holes may then be connected with lines to specify
composition, as long as types do match.

For instance, let's take function print_string. That function is
represented by a block named "print_string". It contains one hole on the
top, named "text", of type string, a hole of type unit on the bottom, no
hole in the inside.

Let's now take a constant string. "Hello world !" is represented by a
block named "string", and containing some initial text. The contents of
the block may be edited to change the text. The block has a hole on the
bottom, named "string", also of type "string".

A line may be drawn from "Hello world !" to the "text" hole of
"print_string", as both have the same type. 

A simple rectangle may also be drawn around all of this, to group this
as a new block (an expression). Another kind of rectangle may also be
drawn to group this as a function. etc.

I think it would be a nice project for a group of students. What do you
think of this ? 

Cheers,
 David


[1] http://en.wikipedia.org/wiki/Pure_Data
[2] http://scratch.mit.edu 

-- 
David Teller ------------------------------------------
Security of Distributed Systems -----------------------
Project JStify: Static Analysis for JavaScript 2  -----
-- http://www.univ-orleans.fr/lifo/Members/David.Teller
----- Laboratoire d'Informatique Fondamentale d'Orleans


             reply	other threads:[~2007-10-31 12:47 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-31 12:47 David Teller [this message]
2007-10-31 14:16 ` [Caml-list] " skaller
2007-10-31 14:50   ` Loup Vaillant
2007-10-31 15:11 ` Lars Nilsson
2007-11-04 10:38 ` Vincent Aravantinos
2007-11-04 11:36 ` Jon Harrop
2007-11-05 15:17 ` Granicz Adam

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=1193834843.6677.39.camel@Blefuscu \
    --to=david.teller@univ-orleans.fr \
    --cc=caml-list@inria.fr \
    /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).