Return-Path: X-Original-To: apmail-corinthia-dev-archive@minotaur.apache.org Delivered-To: apmail-corinthia-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4F349182AC for ; Mon, 15 Jun 2015 17:01:04 +0000 (UTC) Received: (qmail 34877 invoked by uid 500); 15 Jun 2015 17:01:04 -0000 Delivered-To: apmail-corinthia-dev-archive@corinthia.apache.org Received: (qmail 34843 invoked by uid 500); 15 Jun 2015 17:01:04 -0000 Mailing-List: contact dev-help@corinthia.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@corinthia.incubator.apache.org Delivered-To: mailing list dev@corinthia.incubator.apache.org Received: (qmail 34832 invoked by uid 99); 15 Jun 2015 17:01:04 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 15 Jun 2015 17:01:04 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id BF664CDFF0 for ; Mon, 15 Jun 2015 17:01:03 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 3.541 X-Spam-Level: *** X-Spam-Status: No, score=3.541 tagged_above=-999 required=6.31 tests=[HTML_MESSAGE=3, KAM_LAZY_DOMAIN_SECURITY=1, RP_MATCHES_RCVD=-0.46, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-us-east.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id t8AxuP2aaAJa for ; Mon, 15 Jun 2015 17:00:52 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-us-east.apache.org (ASF Mail Server at mx1-us-east.apache.org) with SMTP id 6E52E47C1A for ; Mon, 15 Jun 2015 17:00:51 +0000 (UTC) Received: (qmail 34599 invoked by uid 99); 15 Jun 2015 17:00:50 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 15 Jun 2015 17:00:50 +0000 Received: from [192.168.1.33] (unknown [202.44.228.81]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id E555D1A0503 for ; Mon, 15 Jun 2015 17:00:49 +0000 (UTC) From: Peter Kelly Content-Type: multipart/alternative; boundary="Apple-Mail=_6E8D1189-4817-4E7C-A112-11B3F5630C0E" Message-Id: Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2101\)) Subject: Re: lenses Date: Tue, 16 Jun 2015 00:00:39 +0700 References: To: dev@corinthia.incubator.apache.org In-Reply-To: X-Mailer: Apple Mail (2.2101) --Apple-Mail=_6E8D1189-4817-4E7C-A112-11B3F5630C0E Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 15 Jun 2015, at 7:59 pm, Ian C wrote: >=20 > Hi Peter, >=20 > I see in the word processing you use a series of structures with get = and > put function pointers (lenses ) to drill down - focus on - particular > parts of the document. >=20 > Do you think we should replicate this for odf processing? >=20 > I was thinking just of a series of functions to drill down but hadn't = seen > the funky lenses idea. I kind of like it but wonder as to whether it = helps > or obscures? The design of the Word filter (and what I=E2=80=99d had in mind for = other filters but had not gotten round to implementing) is based on the = idea of bidirectional transformation, which is actually a whole field of = research within the domain of programming languages. The best overview = I=E2=80=99ve seen is this: http://www.cis.upenn.edu/~bcpierce/papers/icmt-2009-slides.pdf = There=E2=80=99s a lot of underlying theory here (and in other papers), = which I=E2=80=99ve yet to fully explore myself, but currently the parts = of the theory I=E2=80=99ve used are the notion of get/put/update = operations. When I started out with the original version of the code (in = Objective C), each lens was a class. A key aspect of lenses (at least in other work that=E2=80=99s been done, = not fully realised in the current DocFormats implementation) is their = composability. That is, the notion of building up larger/more complex = lenses out of smaller ones, combining them using different relations. I=E2=80=99ve got a lot more to say on this topic, and I=E2=80=99ll = outline this in a separate email as it=E2=80=99s a pretty long = discussion. =E2=80=94 Dr Peter M. Kelly pmkelly@apache.org PGP key: http://www.kellypmk.net/pgp-key = (fingerprint 5435 6718 59F0 DD1F BFA0 5E46 2523 BAA1 44AE 2966) --Apple-Mail=_6E8D1189-4817-4E7C-A112-11B3F5630C0E--