From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by sympa.inria.fr (Postfix) with ESMTPS id 3B1A07ED26 for ; Mon, 18 Jun 2012 11:38:08 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUBAHX23k/RVaG2kGdsb2JhbABFFrU8CCIBAQEBCQkNBxQEI4IYAQEBBBICLAEBMgUBDwsLDS4hARIBBQEcBhMIDA6HWgEDCwuaIQkDimSELQEFhBQKQA2JSAaKVmGGO5Unin+DIT6EAA X-IronPort-AV: E=Sophos;i="4.75,791,1330902000"; d="scan'208";a="163330829" Received: from mail-gg0-f182.google.com ([209.85.161.182]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-MD5; 18 Jun 2012 11:37:48 +0200 Received: by ggnm2 with SMTP id m2so5071294ggn.27 for ; Mon, 18 Jun 2012 02:37:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Nm5vvYWOYVeg0p6vzH6EWi+4nXFuz5qDHonDjC14b80=; b=xLZ9RcawWWRYeCtn6vRM3a8HPBRqoGLeel6kOcmVNtlftDp4+8P86ftF6IhpmXnXik hz6vMgnikUQEOLguV6kgSz0P2tFZurS+I3sqiqR9odH33AgtCQpFYMS7m6836A720pWq 5ChovIGaMgibq/k93Sk914kn3ANaSI55yRTqIa8MxppZyv0s6Bt1uqYrE0u5OtokAMKU G3wYJPtSA18wiYoMghgmmwAAMW6ZkpzIGvqvi4PNsI9zsz/9j2CKPDt8loz2N1Lca8uI UMSio0gpc3m4MsD7hE9Ff1MMo7TEoOdShqXbEC/rTcfDOyYC+ZSsdp0bffIFSsnC4l4y t0xQ== MIME-Version: 1.0 Received: by 10.236.190.199 with SMTP id e47mr17365857yhn.107.1340012267495; Mon, 18 Jun 2012 02:37:47 -0700 (PDT) Received: by 10.100.177.17 with HTTP; Mon, 18 Jun 2012 02:37:47 -0700 (PDT) In-Reply-To: References: Date: Mon, 18 Jun 2012 10:37:47 +0100 Message-ID: From: Wojciech Meyer To: bob zhang Cc: Caml List Content-Type: text/plain; charset=ISO-8859-1 Subject: Re: [Caml-list] [ANN] FAN 0.1 [Ask for feedback] Hi Bob, Your example generators indeed look very interesting! I would need to look into more details into that tonight, but you didn't provide a link for the library to download. Thanks, Wojciech On Mon, Jun 18, 2012 at 2:26 AM, bob zhang wrote: > Hi, List > Fan , a type-directed generic programming framework for OCaml > Using Fan, a programmer can easily create generic libraries > for type-directed > programs, including pretty printing, equality, serialization and > deserialization, data generation, generic traversals, folds, etc. > > Compared with deriving, Fan is mainly different in such aspects: > 1. It generate code without touching your source tree, module is > the basic unit. We generated code for all modules in ocaml's compiler > parsing/, typing/, and bootstrapped camlp4 source tree itself. > Check here http://www.seas.upenn.edu/~hongboz/hongbo_zhang_files/fan_doc/ > All modules beginning with Fan_ocaml is generated code for ocaml compiler > Fan_camlp4ast_o is for camlp4ast itself. > 2. composable. All extended syntax are in our mini dsl language "fan" > without polluting the original syntax > 3. Lightweight Check the modules gen_plugins we write generic printing, > equality, map, fold traversal, etc, 9 generic plugins in less than 200 lines > of code. > > It's still at alpha stage, and I have some ideas that need to be polished, I > would be happy to hear any feedback. We hope that FAN can benefit ocaml > community as a camlp4 platform. Fan's code base is pretty small, all the Ast > Transformations are based on quasi-quotations. The only exception is TyDcl > which has no counter-part and Ast Lifting, since the current camlp4 does not > support macro syntax in common lisp something like ``(,,). > > Many Thanks > -- > -- Bob