Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@www.apache.org Received: (qmail 77336 invoked from network); 8 May 2005 00:01:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 8 May 2005 00:01:04 -0000 Received: (qmail 58579 invoked by uid 500); 8 May 2005 00:03:44 -0000 Delivered-To: apmail-jakarta-commons-dev-archive@jakarta.apache.org Received: (qmail 58462 invoked by uid 500); 8 May 2005 00:03:44 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 62888 invoked by uid 99); 7 May 2005 18:35:15 -0000 X-ASF-Spam-Status: No, hits=0.2 required=10.0 tests=NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (hermes.apache.org: local policy) From: jakarta@nitwit.de Subject: [collections,functor] FunctorMap: glue collections and functor Date: Sat, 7 May 2005 20:32:13 +0200 User-Agent: KMail/1.8 MIME-Version: 1.0 X-UID: 58 X-Length: 7896 To: commons-dev@jakarta.apache.org Content-Type: Multipart/Mixed; boundary="Boundary-00=_tmQfCba8qycQOBX" Message-Id: <200505072032.13546.jakarta@nitwit.de> X-Virus-Checked: Checked X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N --Boundary-00=_tmQfCba8qycQOBX Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi! This is actually some kind of a merge of FlexiMap and FunctorMap but IMHO somewhat better and cleaner :) I need the functionality all the time so I'd be glad if it (or an alternative) would find its way to the distro. I actually wrote it together in a couple of minutes so I'd also encourage people to review the code for bugs or even erros in reasoning :) Code attached. Timo --Boundary-00=_tmQfCba8qycQOBX Content-Type: application/x-tgz; name="FunctorMap.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="FunctorMap.tar.gz" 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 /wOYthLyAKAAAA== --Boundary-00=_tmQfCba8qycQOBX Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-dev-help@jakarta.apache.org --Boundary-00=_tmQfCba8qycQOBX--