From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Christopher Howard Newsgroups: gmane.lisp.guile.user Subject: Repeat syntax Date: Fri, 24 Nov 2017 20:05:26 -0900 Message-ID: <1511586326.26826.3.camel@qlfiles.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-KhuNd8Yn82m3EtRqMx1h" X-Trace: blaine.gmane.org 1511586367 23018 195.159.176.226 (25 Nov 2017 05:06:07 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 25 Nov 2017 05:06:07 +0000 (UTC) To: Guile User Mailing List Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sat Nov 25 06:05:59 2017 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eISf5-00058x-3p for guile-user@m.gmane.org; Sat, 25 Nov 2017 06:05:55 +0100 Original-Received: from localhost ([::1]:52010 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eISfC-0003A9-IQ for guile-user@m.gmane.org; Sat, 25 Nov 2017 00:06:02 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:60706) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eISep-0003A3-Em for guile-user@gnu.org; Sat, 25 Nov 2017 00:05:40 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eISem-0006Zu-Am for guile-user@gnu.org; Sat, 25 Nov 2017 00:05:39 -0500 Original-Received: from mx.kolabnow.com ([95.128.36.42]:23906) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eISel-0006ZR-Vj for guile-user@gnu.org; Sat, 25 Nov 2017 00:05:36 -0500 Original-Received: from localhost (unknown [127.0.0.1]) by ext-mx-out003.mykolab.com (Postfix) with ESMTP id ED31D4047E for ; Sat, 25 Nov 2017 06:05:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kolabnow.com; h= mime-version:content-type:content-type:date:date:from:from :subject:subject:message-id:received:received:received; s= dkim20160331; t=1511586331; x=1511586353; bh=juydutzM3bVXebUp18b RGu01vFXZvvkjPAjnhRwuPlo=; b=H+ujo9+YGMZrwbNVKjbGoYtLiI03nM0l6fU GMRZDrIZjOBNJjej8K6U/jdX4OZzSXPmzCJPxWymikpIn8OyefdjEQXINujR0lA4 EPTGJkDgS2Aue2K/mtwb9pMAJgxzQQoKbWlqP265kZsAAbMv2dQZ0uKGCya9IzDt TFIi7rCpEcIX1qaJAr8pZaPIO/UGyW/S5T5WeJzUiVnC3n79ecJy6P1QbVNb8S9Z ObpdgW6lay5fqSwlxr7DZoJdtZegNw344kNvOQ3jpJk1rF9Et0rziGdu5C7KZcyK mrL7WAryzs7PbYyOqMKQhkpei9u0kTCbbVRQ/GTsdVURxFP5duqBLbTArEWv6tOT ZsvRWRj9AMuFUiVVCoTaxfXcdGekqjUJa+2KMkQrH5JcIChOWYUWaaDrVRHZpEWf edDqrgS9ksEWPUZQowaiUuoSybV9fDHz1z6MfFQJ9wWj4+hPTDR8nyBQAcSzGBjw AO7iTwtp31Sb4z9NanAxetkHB+vTxROVDkx4tARYOk9LBeBSu8frRolZdZEB+YYC co1SU+NnEU4ncmEittA9mWTtSwlc6tY6/JCdKw3OSg4FwE X-Virus-Scanned: amavisd-new at mykolab.com Original-Received: from mx.kolabnow.com ([127.0.0.1]) by localhost (ext-mx-out003.mykolab.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id x8A1h2PEMs97 for ; Sat, 25 Nov 2017 06:05:31 +0100 (CET) Original-Received: from int-mx001.mykolab.com (unknown [10.9.13.1]) by ext-mx-out003.mykolab.com (Postfix) with ESMTPS id 6B403402DE for ; Sat, 25 Nov 2017 06:05:31 +0100 (CET) Original-Received: from ext-subm003.mykolab.com (unknown [10.9.6.3]) by int-mx001.mykolab.com (Postfix) with ESMTPS id 47FD019E for ; Sat, 25 Nov 2017 06:05:31 +0100 (CET) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 95.128.36.42 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:14286 Archived-At: --=-KhuNd8Yn82m3EtRqMx1h Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi list, I want to have a function (repeat n exp exp* ...) That calls the expressions n times for side effect, like for-each, but without the bother of dealing with a list. It seems like somebody else must have thought of this before, but I couldn't find the equivalent procedure. After reading 6.10.2 I came up with this (define-syntax repeat =C2=A0 (syntax-rules (repeat) =C2=A0=C2=A0=C2=A0=C2=A0((_ n exp exp* ...) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'(unless (<=3D n 0) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0exp =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0exp* =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0... =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0(repeat (- n 1) exp exp* ...))))) Which doesn't work I think because repeat gets expanded infinitely many times. I was pondering other ways to do this, but they all seem to end in=C2=A0either infinite expansion, or an important variable getting overshadowed. So, could somebody point me in the right direction? --=20 https://emailselfdefense.fsf.org/en/ --=-KhuNd8Yn82m3EtRqMx1h Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEE3cRyrLOhI3rPcNVUee7NbCP9XMUFAloY+hcACgkQee7NbCP9 XMVjVQf/fH7O1VcKJKLJWdJSkHO+IX2YZ/hNe0qM0zhMfEZFyk04gXC0y5hkix+O bl6y0h/9u5Q9D5Vbplqut5Ym4kaqSZnW3UR4/kLecvQzbyTGg51bHYeFQhgrQVSl MbFwKWapPsc+x9qUh83SgPdMjpwf43uP/du6O3s8vBRlz3dygrjLERq8WD6va9fg gDHCrZ0sN6ZtvgtqHbvv+bLTUmo0bhNqagE18eYbIjhcVEtG7oEvVTfLKXdZkmMB AGwA+b2kh/7arsqINUoK46bV230GZQ+5NRD5Jts9eJyaF8czCTYQrRIVT3HOfxwn HJW5rtp3R7e5cWDEKzMK4ybIVcgv4Q== =o8SH -----END PGP SIGNATURE----- --=-KhuNd8Yn82m3EtRqMx1h--