From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=AWL,SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id D73DABC6B for ; Wed, 31 Oct 2007 13:47:11 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAACcWKEfAXQInh2dsb2JhbACOZAIBCAop X-IronPort-AV: E=Sophos;i="4.21,351,1188770400"; d="scan'208";a="3877160" Received: from concorde.inria.fr ([192.93.2.39]) by mail1-smtp-roc.national.inria.fr with ESMTP; 31 Oct 2007 13:47:11 +0100 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id l9VClBsC003105 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Wed, 31 Oct 2007 13:47:11 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAACcWKEfRVYC8mGdsb2JhbACOZAIBAQcEBhEW X-IronPort-AV: E=Sophos;i="4.21,351,1188770400"; d="scan'208";a="3877158" Received: from fk-out-0910.google.com ([209.85.128.188]) by mail1-smtp-roc.national.inria.fr with ESMTP; 31 Oct 2007 13:47:11 +0100 Received: by fk-out-0910.google.com with SMTP id z22so168190fkz for ; Wed, 31 Oct 2007 05:47:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:subject:from:to:content-type:date:message-id:mime-version:x-mailer:content-transfer-encoding:sender; bh=hVoyGTCU4AoGKScfekmZtSVwLOhb+ut8HxN/Mgkpqgs=; b=ghogmrThk8Hngm4fDDWflkvWfxcRKrVWLVkes3zn67ZtGOeVELOn9G8eBUHGzV7ED0nrW0kp2SkR0dnsem7DgRsEDV6NorbI3nyHvcebiUY8BBENjUxkmIJxH7O7CLzoxHSJR0TN89dxqvlUYufDlnz6HcL6DwFby6Huw51f7OA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:subject:from:to:content-type:date:message-id:mime-version:x-mailer:content-transfer-encoding:sender; b=TiTmbCZgKBuUvuT8qdMWggLV5WeYZYWLdEpDmg9+GqlHb5jn7zPiQz3gHzVC3zaYBGCqykxQxawQl83/sqIojUz5BlsB74yay1fdNSQEeJa8QpUmcRkvK/ukwmx6BAc4PBrdc1fbZTCzBtj3xO0FRfxY6PHiaUWmMyQ/ICaol7w= Received: by 10.82.154.12 with SMTP id b12mr16186011bue.1193834830220; Wed, 31 Oct 2007 05:47:10 -0700 (PDT) Received: from ?192.168.0.12? ( [82.235.58.110]) by mx.google.com with ESMTPS id e8sm1093211muf.2007.10.31.05.47.07 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 31 Oct 2007 05:47:08 -0700 (PDT) Subject: Idea for an open-source project From: David Teller To: OCaml Content-Type: text/plain Date: Wed, 31 Oct 2007 13:47:23 +0100 Message-Id: <1193834843.6677.39.camel@Blefuscu> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit Sender: David Teller X-Miltered: at concorde with ID 4728794F.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; univ-orleans:01 ocaml:01 cheers:01 wikipedia:01 wiki:01 univ-orleans:01 lifo:01 d'orleans:01 dragging:98 toolbar:98 javascript:98 data:02 data:02 expression:02 argument:02 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