#!/usr/bin/env sh
# -*- wisp -*-
guile -L $(dirname $(dirname $(realpath "$0"))) -c '(import (language wisp spec))'
exec guile -L $(dirname $(dirname $(realpath "$0"))) --language=wisp -s "$0" "$@"
; !#

;; Testing syntax-rules and syntax-case with wisp

;; Syntax-case: add1 (from guile docs)
define-syntax add1
  lambda : x
    syntax-case x : 
      : _ exp
        syntax : + exp 1

;; use the #' shorthand for syntax
define-syntax add2
  lambda : x
    syntax-case x : 
      : _ exp
        #' + exp 2

;; Syntax-rules add which requires at least 1 argument
define-syntax add-with-argument
 syntax-rules : 
  : _ a b ...
    + a b ...

;; Same with syntax-case
define-syntax add-with-argument
 lambda : x
  syntax-case x : 
   : _ a b ...
     #' + a b ...

; format #t "this breaks\n"
; add-with-argument 
format #t "returns 1: ~A\n" : add-with-argument 1