Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Idea for an open-source project
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: David Teller <David.Teller@u...>
Subject: Idea for an open-source project
     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

 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 ? 



David Teller ------------------------------------------
Security of Distributed Systems -----------------------
Project JStify: Static Analysis for JavaScript 2  -----
----- Laboratoire d'Informatique Fondamentale d'Orleans