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 50AA67ED26 for ; Mon, 18 Jun 2012 03:26:19 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkYBABeD3k/RVda2kGdsb2JhbABFFqxGAYhvCCIBAQEBCQkNBxQEI4IxAiwBGxgGAxIJB10BEQEFASInDodaAQMLC5csgmEJA4whgnCDbAoZJw1XiHEBBQyRZwOVJIESjQ4+hBs X-IronPort-AV: E=Sophos;i="4.75,789,1330902000"; d="scan'208";a="163278419" Received: from mail-ob0-f182.google.com ([209.85.214.182]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 18 Jun 2012 03:26:18 +0200 Received: by obcni5 with SMTP id ni5so13399329obc.27 for ; Sun, 17 Jun 2012 18:26:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=hAGQRXmSAgGeRpms/deQIOhxD1ZI+MNzJZi1JhzHIak=; b=SPZs+QvPpjpJfwMyBIMbl02JfdnqDyhLpIXco2Z2moITpRghd1G3U+4Zg9TqbHH8ii ks341yYwh3zL7f5q5IQmnJswj9qgdsGruTLVVqYxjmuScSgkevJF0+GIMy6ePYw+fYO+ cZ3rJXrLBgsZ6plDZYnP34WyCQH+k/vp5pGKEWEkxj+pB2fiOb/jJvATeLL/5bx5cHzU J69LGJSDfOVcNw7uWl5xoeHkTC0HKuOr4d4Xhdyikm0XouYh3KjCkSXk88O8my+KLbtU V4L7izU+oF+Ns6ZoajbaGUqgBK2Ob22ACMObgvqxPLN11c7eBah5WGOkG4T/yowuLsQD D+gA== MIME-Version: 1.0 Received: by 10.50.168.1 with SMTP id zs1mr7226157igb.45.1339982777294; Sun, 17 Jun 2012 18:26:17 -0700 (PDT) Received: by 10.64.39.78 with HTTP; Sun, 17 Jun 2012 18:26:17 -0700 (PDT) Date: Sun, 17 Jun 2012 21:26:17 -0400 Message-ID: From: bob zhang To: Caml List Content-Type: multipart/alternative; boundary=e89a8f83a61372204b04c2b50d72 Subject: [Caml-list] [ANN] FAN 0.1 [Ask for feedback] --e89a8f83a61372204b04c2b50d72 Content-Type: text/plain; charset=ISO-8859-1 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* fo**r 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 --e89a8f83a61372204b04c2b50d72 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi, List
=A0 =A0 =A0Fan=A0, a type-directed gene= ric=A0programming framework for OCaml
Using Fan, a programmer= can easily create generic libraries for=A0type-directed
programs, including pretty printing, equality,=A0serialization and des= erialization, data generation, generic=A0traversals, folds, etc.

Compared with deriving,=A0Fan is mainly different in such aspects:
1. It generate code without touching your source tree, m= odule is=A0
the basic unit. We generated code fo= r all modules in ocaml's compiler
parsing/, = typing/, and bootstrapped camlp4 source tree itself.
All modules beginning with Fan_ocaml is generated code = for ocaml compiler
Fan_camlp4ast_o is for camlp4ast itself.
2. composable.=A0 A= ll extended syntax are in our mini dsl language "fan" without pol= luting the original syntax
3. Lightweight=A0 =A0Check the modules= =A0gen_plugins=A0 we write generic printing, equal= ity, map, fold traversal, etc, 9 generic plugins in less than 200 lin= es of code.

It's still at alpha stage, and I have some ideas th= at need to be polished, I would be happy=A0to hear any = feedback.=A0We 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=A0the current camlp4= does not support =A0macro syntax in=A0common lisp something = like ``(,,).

Many Thanks
--
-- = Bob
--e89a8f83a61372204b04c2b50d72--