/usr/share/guile/2.0/ice-9
NameSizeModeActions
and-let-star.scm25930644editdlrm
binary-ports.scm19210644editdlrm
boot-9.scm1547200644editdlrm
buffered-input.scm49350644editdlrm
calling.scm107900644editdlrm
channel.scm53120644editdlrm
command-line.scm186550644editdlrm
common-list.scm91600644editdlrm
control.scm40360644editdlrm
curried-definitions.scm18290644editdlrm
debug.scm11140644editdlrm
deprecated.scm319930644editdlrm
documentation.scm74320644editdlrm
eval-string.scm29970644editdlrm
eval.scm213540644editdlrm
expect.scm56280644editdlrm
format.scm762840644editdlrm
ftw.scm247530644editdlrm
futures.scm111860644editdlrm
gap-buffer.scm103840644editdlrm
getopt-long.scm168880644editdlrm
hash-table.scm18130644editdlrm
hcons.scm26140644editdlrm
history.scm23430644editdlrm
i18n.scm177780644editdlrm
iconv.scm37350644editdlrm
lineio.scm39410644editdlrm
list.scm13190644editdlrm
local-eval.scm99460644editdlrm
ls.scm32750644editdlrm
mapping.scm49550644editdlrm
match.scm20450644editdlrm
match.upstream.scm364590644editdlrm
networking.scm34070644editdlrm
null.scm11570644editdlrm
occam-channel.scm74360644editdlrm
optargs.scm161230644editdlrm
poe.scm33820644editdlrm
poll.scm61660644editdlrm
popen.scm58060644editdlrm
posix.scm27930644editdlrm
pretty-print.scm162110644editdlrm
psyntax-pp.scm1667740644editdlrm
psyntax.scm1471180644editdlrm
q.scm42970644editdlrm
quasisyntax.scm53480644editdlrm
r4rs.scm96450644editdlrm
r5rs.scm16020644editdlrm
r6rs-libraries.scm91640644editdlrm
rdelim.scm76480644editdlrm
readline.scm97860644editdlrm
receive.scm10820644editdlrm
regex.scm90840644editdlrm
runq.scm83790644editdlrm
rw.scm10470644editdlrm
safe-r5rs.scm38140644editdlrm
safe.scm12750644editdlrm
save-stack.scm21970644editdlrm
scm-style-repl.scm119860644editdlrm
serialize.scm38590644editdlrm
session.scm181430644editdlrm
slib.scm15830644editdlrm
stack-catch.scm19830644editdlrm
streams.scm74880644editdlrm
string-fun.scm87980644editdlrm
syncase.scm15560644editdlrm
threads.scm63880644editdlrm
time.scm20880644editdlrm
top-repl.scm28120644editdlrm
unicode.scm10050644editdlrm
vlist.scm220810644editdlrm
weak-vector.scm12880644editdlrm
Edit: /usr/share/guile/2.0/ice-9/and-let-star.scm (2593B)
;;;; and-let-star.scm --- and-let* syntactic form (SRFI-2) for Guile ;;;; ;;;; Copyright (C) 1999, 2001, 2004, 2006, 2013, ;;;; 2015 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public ;;;; License as published by the Free Software Foundation; either ;;;; version 3 of the License, or (at your option) any later version. ;;;; ;;;; This library is distributed in the hope that it will be useful, ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;;; Lesser General Public License for more details. ;;;; ;;;; You should have received a copy of the GNU Lesser General Public ;;;; License along with this library; if not, write to the Free Software ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA (define-module (ice-9 and-let-star) :export-syntax (and-let*)) (define-syntax %and-let* (lambda (form) (syntax-case form () ;; Handle zero-clauses special-case. ((_ orig-form () . body) #'(begin #t . body)) ;; Reduce clauses down to one regardless of body. ((_ orig-form ((var expr) rest . rest*) . body) (identifier? #'var) #'(let ((var expr)) (and var (%and-let* orig-form (rest . rest*) . body)))) ((_ orig-form ((expr) rest . rest*) . body) #'(and expr (%and-let* orig-form (rest . rest*) . body))) ((_ orig-form (var rest . rest*) . body) (identifier? #'var) #'(and var (%and-let* orig-form (rest . rest*) . body))) ;; Handle 1-clause cases without a body. ((_ orig-form ((var expr))) (identifier? #'var) #'expr) ((_ orig-form ((expr))) #'expr) ((_ orig-form (var)) (identifier? #'var) #'var) ;; Handle 1-clause cases with a body. ((_ orig-form ((var expr)) . body) (identifier? #'var) #'(let ((var expr)) (and var (begin . body)))) ((_ orig-form ((expr)) . body) #'(and expr (begin . body))) ((_ orig-form (var) . body) (identifier? #'var) #'(and var (begin . body))) ;; Handle bad clauses. ((_ orig-form (bad-clause . rest) . body) (syntax-violation 'and-let* "Bad clause" #'orig-form #'bad-clause))))) (define-syntax and-let* (lambda (form) (syntax-case form () ((_ (c ...) body ...) #`(%and-let* #,form (c ...) body ...))))) (cond-expand-provide (current-module) '(srfi-2))