nendo 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/srfi-2.nnd ADDED
@@ -0,0 +1,42 @@
1
+ ;;;-*- mode: nendo; syntax: scheme -*-;;;
2
+ ;;;
3
+ ;;; srfi-2.nnd - srfi-2 : AND-LET*: an AND with local bindings, a guarded LET* special form
4
+ ;;;
5
+ ;;; Copyright (c) 2009 Alex Shinn
6
+ ;;; All rights reserved.
7
+ ;;;
8
+ ;;; Redistribution and use in source and binary forms, with or without
9
+ ;;; modification, are permitted provided that the following conditions
10
+ ;;; are met:
11
+ ;;; 1. Redistributions of source code must retain the above copyright
12
+ ;;; notice, this list of conditions and the following disclaimer.
13
+ ;;; 2. Redistributions in binary form must reproduce the above copyright
14
+ ;;; notice, this list of conditions and the following disclaimer in the
15
+ ;;; documentation and/or other materials provided with the distribution.
16
+ ;;; 3. The name of the author may not be used to endorse or promote products
17
+ ;;; derived from this software without specific prior written permission.
18
+ ;;;
19
+ ;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20
+ ;;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21
+ ;;; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22
+ ;;; IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23
+ ;;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24
+ ;;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ ;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
+ ;;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
+ ;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28
+ ;;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ ;;;
30
+ ;;; ported for Nendo language by Kiyoka Nishiyama.
31
+ ;;;
32
+
33
+ (define-syntax and-let*
34
+ (syntax-rules ()
35
+ ((and-let* () . body)
36
+ (begin . body))
37
+ ((and-let* ((var expr) . rest) . body)
38
+ (let ((var expr))
39
+ (and var (and-let* rest . body))))
40
+ ((and-let* ((expr) . rest) . body)
41
+ (let ((tmp expr))
42
+ (and tmp (and-let* rest . body))))))