From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Julian Graham" Newsgroups: gmane.lisp.guile.user,gmane.lisp.scheme.snow Subject: Snowflake: Snow integration with Guile module system Date: Tue, 6 Nov 2007 23:35:38 -0500 Message-ID: <2bc5f8210711062035we322920n8a93661723ee663c@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_37959_30639725.1194410138428" X-Trace: ger.gmane.org 1194410159 2073 80.91.229.12 (7 Nov 2007 04:35:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 7 Nov 2007 04:35:59 +0000 (UTC) To: "Guile User" , "Snow Users List" Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Wed Nov 07 05:36:00 2007 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Ipcdy-0002Su-Ta for guile-user@m.gmane.org; Wed, 07 Nov 2007 05:35:59 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ipcdn-0007YR-43 for guile-user@m.gmane.org; Tue, 06 Nov 2007 23:35:47 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ipcdj-0007YE-1w for guile-user@gnu.org; Tue, 06 Nov 2007 23:35:43 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ipcdi-0007Y2-II for guile-user@gnu.org; Tue, 06 Nov 2007 23:35:42 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ipcdi-0007Xy-Bh for guile-user@gnu.org; Tue, 06 Nov 2007 23:35:42 -0500 Original-Received: from fk-out-0910.google.com ([209.85.128.185]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ipcdh-0000qv-5Y for guile-user@gnu.org; Tue, 06 Nov 2007 23:35:41 -0500 Original-Received: by fk-out-0910.google.com with SMTP id 19so4320182fkr for ; Tue, 06 Nov 2007 20:35:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type; bh=LkZiAXRKBkgMlAOh+T/TLplDzKja+psnOEPbkoLp7JM=; b=Lu38kEI2sDGRnsABSuPUSQQVxP6+72uAea3aeUtSrZbaIWCPVRQ33etuIXbsAtwvjoZaaZ4MK2/2fmbJqLxvCNGouxo4nmwRsrjLshHUYDAoquHCMXbRsSsOZS2HzVu/VBtgmAXwsyjSjlpdgDM0ngbc3RuQqSDINv23nYBkfV8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type; b=rVgqxExCL7pF9T84yILi/UA8ea9YqH0NxV//7NFO/k4mos3D89wRJdq2d1yWg3UDkwLJCu6+9lw/MY6M33vBBtYXoVzeTCsJ3yNNKmnDUYIHMYdJHLDoijT11hsXu3ATQLV+xRq2gDpBFAa2OhLDpyuLgx2xMScYPaAQBuFIHZc= Original-Received: by 10.82.181.10 with SMTP id d10mr14224429buf.1194410138433; Tue, 06 Nov 2007 20:35:38 -0800 (PST) Original-Received: by 10.82.166.1 with HTTP; Tue, 6 Nov 2007 20:35:38 -0800 (PST) X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2) X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:6263 gmane.lisp.scheme.snow:93 Archived-At: ------=_Part_37959_30639725.1194410138428 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Schemers, So, Snow is a wonderful idea (Guile people, go to http://snow.iro.umontreal.ca/ right now if you haven't checked out Snow yet), but there are some drawbacks to its approach to library management. Among them is the fact that it doesn't integrate with your Scheme platform's native module system at all -- in fact, Snow pretty much just concatenates the bodies of all of your library implementations on load, which leads to problems with symbol name collisions [1]. And that's kind of okay. To get the benefit of Snow packages in, say, Guile, though, it's necessary to make use of the encapsulation that Guile's module system provides. To that end, I've whipped up a small Guile module called (snow snowflake) (because Scheme module systems are all unique, like snowflakes!) that converts Snow packages to Guile modules and provides a Snow-compatible mechanism for loading them. To wit: snow:package->module! package ...where 'package' is a string giving the name of a Snow package you have already downloaded and installed via Snow (e.g., "fixnum/v1.0.3"), will copy the implementation files from $SNOW_SITE_DIR to an appropriate subdirectory of %site-dir/snow (i.e., %site-dir/snow/packages/[package-name]/[package-version]) and rewrite the package's metadata as a Guile module definition. snow:use-modules module-list ...where 'module-list' is a list of symbols giving (partially-specified) Snow package names -- e.g., (fixnum/v1) or (srfi13/v1.0.0 srfi14/v1.0) -- will act as a replacement for Guile's use-modules form, locating the right versions of packages that have been installed in Guile's load path via snow:package->module!. Here's an example: (load "snowflake.scm") (use-modules (snow snowflake)) (snow:package->module! "fixnum/v1.0.3") (snow:package->module! "srfi14/v1.0.1") (snow:use-modules (srfi14/v1)) I've attached a copy of Snowflake; it works, but just barely -- you need write access to Guile's site dir, and the code does no error checking to speak of. And I'm sure there are plenty of things it doesn't get quite right, like exported syntax definitions. Still, I hope you guys can take a look and tell me what you think. Regards, Julian [1]: https://webmail.iro.umontreal.ca/pipermail/snow-users-list/2007-October/000096.html ------=_Part_37959_30639725.1194410138428 Content-Type: text/x-scheme; name=snowflake.scm Content-Transfer-Encoding: base64 X-Attachment-Id: f_f8pcj1eh1 Content-Disposition: attachment; filename=snowflake.scm OzsgU25vd2ZsYWtlOiBTbm93IGludGVncmF0aW9uIHdpdGggR3VpbGUgbW9kdWxlIHN5c3RlbQo7 OyBDb3B5cmlnaHQgKGMpIDIwMDcgSnVsaWFuIEdyYWhhbQo7Owo7OyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgo7Owo7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo7Owo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K CihkZWZpbmUtbW9kdWxlIChzbm93IHNub3dmbGFrZSkKICAjOmV4cG9ydCAoc25vdzp1c2UtbW9k dWxlcwoJICAgIHNub3c6cGFja2FnZS0+bW9kdWxlISkKICAjOnVzZS1tb2R1bGUgKGljZS05IHJk ZWxpbSkKICAjOnVzZS1tb2R1bGUgKGljZS05IHByZXR0eS1wcmludCkKICAjOnVzZS1tb2R1bGUg KHNyZmkgc3JmaS0xKQogICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTIpCiAgIzp1c2UtbW9kdWxl IChzcmZpIHNyZmktMTMpKQoKKGRlZmluZSAlc25vdy11c2VyLWRpciUgIiIpCihkZWZpbmUgJXNu b3ctc2l0ZS1kaXIlICIiKQoKKGRlZmluZSBpbml0LWxvY2sgKG1ha2UtbXV0ZXgpKQooZGVmaW5l IGluaXR0ZWQgI2YpCgooZGVmaW5lIChpbml0KQogIChsb2NrLW11dGV4IGluaXQtbG9jaykKICAo aWYgKG5vdCBpbml0dGVkKQogICAgICAoYmVnaW4KCShhbmQtbGV0KiAoKHN1ZCAoZ2V0ZW52ICJT Tk9XX1VTRVJfRElSIikpKSAoc2V0ISAlc25vdy11c2VyLWRpciUgc3VkKSkKCShhbmQtbGV0KiAo KHNzZCAoZ2V0ZW52ICJTTk9XX1NJVEVfRElSIikpKSAoc2V0ISAlc25vdy1zaXRlLWRpciUgc3Nk KSkKCShzZXQhIGluaXR0ZWQgI3QpKSkKICAodW5sb2NrLW11dGV4IGluaXQtbG9jaykpCgooZGVm aW5lLW1hY3JvIChzbm93OnVzZS1tb2R1bGVzIGxzdCkKICAoZGVmaW5lIChsaXN0LT52ZXJzaW9u IHZzKSAoc3RyaW5nLWFwcGVuZCAidiIgKHN0cmluZy1qb2luIHZzICNcLikpKQogIChkZWZpbmUg KHZlcnNpb24tPmxpc3QgdikgKG1hcCBzdHJpbmctPm51bWJlcgoJCQkJIChzdHJpbmctc3BsaXQg KHN1YnN0cmluZyB2IDEpICNcLikpKQogIChkZWZpbmUgKG1hdGNoLXZlcnNpb24gcGFja2FnZSB2 KQogICAgKGxldCogKChtYXRjaGVzIAoJICAgIChmaWx0ZXItbWFwIAoJICAgICAobGFtYmRhICh4 KSAKCSAgICAgICAoYW5kLWxldCogKCh4cyAoc3RyaW5nLWFwcGVuZCB4ICIvc25vdy9wYWNrYWdl cy8iIHBhY2thZ2UpKQoJCQkgIChkaXIgKGFuZCAoYWNjZXNzPyB4cyBGX09LKSAob3BlbmRpciB4 cykpKSkKCQkJIChsZXQgbHAgKCkgCgkJCSAgIChsZXQgKChuIChyZWFkZGlyIGRpcikpKQoJCQkg ICAgIChjb25kICgoZW9mLW9iamVjdD8gbikgI2YpCgkJCQkgICAoKHN0cmluZy1wcmVmaXg/IHYg bikgbikKCQkJCSAgIChlbHNlIChscCkpKSkpKSkKCSAgICAgJWxvYWQtcGF0aCkpKQogICAgICAo b3IgKGFuZCAobm90IChudWxsPyBtYXRjaGVzKSkKCSAgICAgICAobGV0ICgoYmVzdC1tYXRjaCAK CQkgICAgICAoY2FyIChzb3J0IG1hdGNoZXMKCQkJCSAobGFtYmRhICh4IHkpCgkJCQkgICAoPiAo bGVuZ3RoICh2ZXJzaW9uLT5saXN0IHgpKQoJCQkJICAgICAgKGxlbmd0aCAodmVyc2lvbi0+bGlz dCB5KSkpKSkpKSkKCQkgKHN0cmluZy0+c3ltYm9sIGJlc3QtbWF0Y2gpKSkKCSAgKGVycm9yICJu byBjb2RlIGZvciBtb2R1bGUiIHBhY2thZ2UpKSkpCiAgYCh1c2UtbW9kdWxlcyAsKG1hcCAobGFt YmRhIChtb2R1bGUtc3ltKQoJCQkobGV0KiAoKHMgKHN5bWJvbC0+c3RyaW5nIG1vZHVsZS1zeW0p KQoJCQkgICAgICAgKHNpIChzdHJpbmctaW5kZXggcyAjXC8pKQoJCQkgICAgICAgKG4gKHN1YnN0 cmluZyBzIDAgc2kpKQoJCQkgICAgICAgKHNuIChzdHJpbmctPnN5bWJvbCBuKSkKCQkJICAgICAg ICh2cyAoc3Vic3RyaW5nIHMgKCsgc2kgMSkpKSkKCQkJICAobGlzdCAnc25vdyAncGFja2FnZXMg c24gKG1hdGNoLXZlcnNpb24gbiB2cykgc24pKSkKCQkgICAgICBsc3QpKSkKCihkZWZpbmUgKHNu b3c6cGFja2FnZS0+bW9kdWxlISBwa2cpCgogIChkZWZpbmUgKG1rZGlycyBwYXRoKQogICAgKG9y IChhY2Nlc3M/IHBhdGggRl9PSykKCShsZXQgKChwZXMgKHN1YnN0cmluZyBwYXRoIDAgKHN0cmlu Zy1yaW5kZXggcGF0aCAjXC8pKSkpCgkgIChta2RpcnMgcGVzKQoJICAobWtkaXIgcGF0aCkpKSkK CiAgKGRlZmluZSAoY29weS1kaXIgZnJvbS1kaXIgdG8tZGlyIGV4Y2x1ZGVzKQogICAgKGxldCAo KGRpcnN0cm0gKG9wZW5kaXIgZnJvbS1kaXIpKSkKICAgICAgKG1rZGlycyB0by1kaXIpCiAgICAg IChsZXQgZiAoKG4gKHJlYWRkaXIgZGlyc3RybSkpKQoJKG9yIChlb2Ytb2JqZWN0PyBuKQoJICAg IChiZWdpbiAob3IgKGVxdj8gKHN0cmluZy1yZWYgbiAwKSAjXC4pCgkJICAgICAgIChsZXQqICgo Zm4gKHN0cmluZy1hcHBlbmQgZnJvbS1kaXIgIi8iIG4pKQoJCQkgICAgICAodG4gKHN0cmluZy1h cHBlbmQgdG8tZGlyICIvIiBuKSkKCQkJICAgICAgKHR5cGUgKHN0YXQ6dHlwZSAoc3RhdCBmbikp KSkKCQkJIChvciAobWVtYmVyIG4gZXhjbHVkZXMpCgkJCSAgICAgKGNvbmQgKChlcT8gdHlwZSAn cmVndWxhcikgKGNvcHktZmlsZSBmbiB0bikpCgkJCQkgICAoKGVxPyB0eXBlICdkaXJlY3Rvcnkp IAoJCQkJICAgIChjb3B5LWRpciBmbiB0bikpKSkpKQoJCSAgIChmIChyZWFkZGlyIGRpcnN0cm0p KSkpKSkpCgogIChkZWZpbmUgKGNleHBhbmQgZXhwcnMpCiAgICAoZGVmaW5lICh0ZXN0IGZlYXR1 cmUpCiAgICAgIChjb25kICgoZXE/IGZlYXR1cmUgJ2Vsc2UpICN0KQoJICAgICgoc3ltYm9sPyBm ZWF0dXJlKSAoZXE/IGZlYXR1cmUgJ2d1aWxlKSkKCSAgICAoKGFuZCAocGFpcj8gZmVhdHVyZSkg KGxpc3Q/IGZlYXR1cmUpKQoJICAgICAoY2FzZSAoY2FyIGZlYXR1cmUpCgkgICAgICAgKChhbmQp IChldmVyeSB0ZXN0IChjZHIgZmVhdHVyZSkpKQoJICAgICAgICgob3IpIChhbnkgdGVzdCAoY2Ry IGZlYXR1cmUpKSkKCSAgICAgICAoKG5vdCkgKG5vdCAodGVzdCAoY2FkciBmZWF0dXJlKSkpKSkp CgkgICAgKGVsc2UgI2YpKSkKICAgIAogICAgKGlmIChwYWlyPyBleHBycykKCShsZXQgKChleHBy IChjYXIgZXhwcnMpKSkKCSAgKGNvbmQgKChhbmQgKHBhaXI/IGV4cHIpIChlcT8gKGNhciBleHBy KSAnY29uZC1leHBhbmQpKQoJCSAobGV0IGxvb3AgKChjbGF1c2VzIChjZHIgZXhwcikpKQoJCSAg IChsZXQqICgoY2xhdXNlIChjYXIgY2xhdXNlcykpCgkJCSAgKHJlcyAodGVzdCAoY2FyIGNsYXVz ZSkpKSkKCQkgICAgIChpZiByZXMgCgkJCSAoYXBwZW5kIChjZHIgY2xhdXNlKSAoY2V4cGFuZCAo Y2RyIGV4cHJzKSkpCgkJCSAobG9vcCAoY2RyIGNsYXVzZXMpKSkpKSkKCQkoKGFuZCAocGFpcj8g ZXhwcikgKGVxPyAoY2FyIGV4cHIpICd0ZXN0KikpCgkJIChjZXhwYW5kIChjZHIgZXhwcnMpKSkK CQkoZWxzZSAoY29ucyBleHByIChjZXhwYW5kIChjZHIgZXhwcnMpKSkpKSkKCWV4cHJzKSkKICAK ICAoaW5pdCkKICAobGV0KiAoKHBrZy1kaXIgKHN0cmluZy1hcHBlbmQgJXNub3ctc2l0ZS1kaXIl ICIvY3VycmVudC9wYWNrIikpCgkgKG5hbWUgKHN1YnN0cmluZyBwa2cgMCAoc3RyaW5nLWluZGV4 IHBrZyAjXC8pKSkKCSAodmVyIChzdWJzdHJpbmcgcGtnICgrIChzdHJpbmctaW5kZXggcGtnICNc LykgMSkpKQoJIChmdWxsLXBrZy1kaXIgKHN0cmluZy1qb2luIChsaXN0IHBrZy1kaXIgbmFtZSB2 ZXIgInNub3ciKSAiLyIpKQoJIChmdWxsLXBrZy1maWxlIChzdHJpbmctYXBwZW5kIGZ1bGwtcGtn LWRpciAiLyIgbmFtZSAiLnNjbSIpKQoJIChkZXN0LWRpciAoc3RyaW5nLWpvaW4gKGxpc3QgKCVz aXRlLWRpcikgInNub3ciICJwYWNrYWdlcyIgbmFtZSB2ZXIpCgkJCQkiLyIpKSkKCiAgICAoYW5k IChhY2Nlc3M/IGZ1bGwtcGtnLWRpciBSX09LKQoJIChhY2Nlc3M/IGZ1bGwtcGtnLWZpbGUgUl9P SykpCiAgICAKICAgIChjb3B5LWRpciBmdWxsLXBrZy1kaXIgZGVzdC1kaXIgYCgsZnVsbC1wa2ct ZmlsZSkpCiAgICAobGV0KiAoKHByZWQgKGxhbWJkYSAoeCkgKGxhbWJkYSAoeSkgKGFuZCAobGlz dD8geSkgKGVxPyAoY2FyIHkpIHgpKSkpKQoJICAgKHBmIChvcGVuLWlucHV0LWZpbGUgZnVsbC1w a2ctZmlsZSkpCgkgICAob2YgKG9wZW4tb3V0cHV0LWZpbGUgKHN0cmluZy1hcHBlbmQgZGVzdC1k aXIgIi8iIG5hbWUgIi5zY20iKSkpCgkgICAoc3ggKHJlYWQgcGYpKQoKCSAgIChzbiAoc3RyaW5n LT5zeW1ib2wgbmFtZSkpCgkgICAoc3YgKHN0cmluZy0+c3ltYm9sIHZlcikpCgkJCQkJCQkgICAK CSAgIChuc3ggYChkZWZpbmUtbW9kdWxlIChzbm93IHBhY2thZ2VzICxzbiAsc3YgLHNuKSkpCgoJ ICAgKHByb2NlZHVyZXMgKGxpc3QpKQoJICAgKG1hY3JvcyAobGlzdCkpKQogICAgICAKICAgICAK ICAgICAgKGZvci1lYWNoIChsYW1iZGEgKHgpIAoJCSAgKGxldCAoKGN4IChjYWRyIHgpKQoJCQko dHlwZSAoY2FyIHgpKSkKCQkgICAgKGlmIChlcT8gdHlwZSAnZGVmaW5lLW1hY3JvKQoJCQkoc2V0 ISBtYWNyb3MgKGFwcGVuZCBtYWNyb3MgYCgseCkpKQoJCQkoc2V0ISBwcm9jZWR1cmVzIChhcHBl bmQgcHJvY2VkdXJlcyBgKCx4KSkpKSkpCgkJKGNleHBhbmQgKGNkciAoZmluZCAocHJlZCAncHJv dmlkZTopIAoJCQkJICAgIChjZGRyIHN4KSkpKSkKCiAgICAgIChvciAobnVsbD8gcHJvY2VkdXJl cykgCgkgIChhcHBlbmQhIG5zeCAobGlzdCAjOmV4cG9ydCAobWFwIChsYW1iZGEgKHgpIAoJCQkJ CSAgICAgKGxldCAoKHkgKGNhZHIgeCkpKQoJCQkJCSAgICAgICAoaWYgKHBhaXI/IHkpIChjYXIg eSkgeSkpKQoJCQkJCSAgIHByb2NlZHVyZXMpKSkpCiAgICAgIChvciAobnVsbD8gbWFjcm9zKSAK CSAgKGFwcGVuZCEgbnN4IChsaXN0ICM6ZXhwb3J0LXN5bnRheCAobWFwIChsYW1iZGEgKHgpIChj YWFkciB4KSkKCQkJCQkJICBtYWNyb3MpKSkpCgkgICAgICAgCiAgICAgIChwcmV0dHktcHJpbnQg bnN4IG9mKQogICAgICAobmV3bGluZSBvZikKICAgICAgKGxldCAoKHJlcXVpcmVtZW50cyAobWFw IGNhZHIgKGZpbHRlciAocHJlZCAncmVxdWlyZTopIChjZGRyIHN4KSkpKSkKCShvciAobnVsbD8g cmVxdWlyZW1lbnRzKQoJICAgIChiZWdpbiAocHJldHR5LXByaW50IGAodXNlLW1vZHVsZXMgKHNu b3cgc25vd2ZsYWtlKSkgb2YpCgkJICAgKHByZXR0eS1wcmludCBgKHNub3c6dXNlLW1vZHVsZXMg LHJlcXVpcmVtZW50cykgb2YpKSkpCiAgICAgIChmb3ItZWFjaCAobGFtYmRhICh4KSAocHJldHR5 LXByaW50IHggb2YpKSBtYWNyb3MpCiAgICAgIChwcmV0dHktcHJpbnQgJyhkZWZpbmUtbWFjcm8g aW5jbHVkZSogbG9hZCkgb2YpCiAgICAgIChwcmV0dHktcHJpbnQgJyhkZWZpbmUtbWFjcm8gKHRl c3QqIC4gZXhwcnMpCgkJICAgICAgIChldmFsIChpZiAobnVsbD8gKGNkciBleHBycykpIAoJCQkJ IChjYXIgZXhwcnMpIAoJCQkJIChjb25zICdiZWdpbiBleHBycykpCgkJCSAgICAgKGludGVyYWN0 aW9uLWVudmlyb25tZW50KSkpCgkJICAgIG9mKQogICAgICAocHJldHR5LXByaW50ICcoZGVmaW5l LW1hY3JvIChleHBlY3QqIGV4cHIpCgkJICAgICAgIChmYWxzZS1pZi1leGNlcHRpb24gLGV4cHIp KSAKCQkgICAgb2YpCiAgICAgIChkbyAoKGMgKHJlYWQtbGluZSBwZiAnc3BsaXQpIChyZWFkLWxp bmUgcGYgJ3NwbGl0KSkpCgkgICgoZW9mLW9iamVjdD8gKGNkciBjKSkgKGNsb3NlIG9mKSkKCSh3 cml0ZS1saW5lIChjYXIgYykgb2YpKQoKICAgICAgKGNsb3NlIHBmKQogICAgICAoY2xvc2Ugb2Yp KSkpCg== ------=_Part_37959_30639725.1194410138428 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user ------=_Part_37959_30639725.1194410138428--