LilyPond-Ruby 0.0.2.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1112) hide show
  1. checksums.yaml +4 -4
  2. data/etc/fonts/conf.d/10-hinting-slight.conf +15 -0
  3. data/etc/fonts/conf.d/10-scale-bitmap-fonts.conf +83 -0
  4. data/etc/fonts/conf.d/11-lcdfilter-default.conf +17 -0
  5. data/etc/fonts/conf.d/20-unhint-small-vera.conf +49 -0
  6. data/etc/fonts/conf.d/30-metric-aliases.conf +637 -0
  7. data/etc/fonts/conf.d/40-nonlatin.conf +332 -0
  8. data/etc/fonts/conf.d/45-generic.conf +136 -0
  9. data/etc/fonts/conf.d/45-latin.conf +301 -0
  10. data/etc/fonts/conf.d/48-spacing.conf +16 -0
  11. data/etc/fonts/conf.d/49-sansserif.conf +22 -0
  12. data/etc/fonts/conf.d/50-user.conf +16 -0
  13. data/etc/fonts/conf.d/51-local.conf +7 -0
  14. data/etc/fonts/conf.d/60-generic.conf +64 -0
  15. data/etc/fonts/conf.d/60-latin.conf +88 -0
  16. data/etc/fonts/conf.d/65-fonts-persian.conf +418 -0
  17. data/etc/fonts/conf.d/65-nonlatin.conf +228 -0
  18. data/etc/fonts/conf.d/69-unifont.conf +28 -0
  19. data/etc/fonts/conf.d/80-delicious.conf +19 -0
  20. data/etc/fonts/conf.d/90-synthetic.conf +64 -0
  21. data/etc/fonts/conf.d/README +23 -0
  22. data/etc/fonts/fonts.conf +101 -0
  23. data/etc/relocate/fontconfig.reloc +2 -0
  24. data/etc/relocate/guile.reloc +2 -0
  25. data/etc/relocate/libexec.reloc +1 -0
  26. data/lib/guile/2.2/ccache/ice-9/and-let-star.go +0 -0
  27. data/lib/guile/2.2/ccache/ice-9/arrays.go +0 -0
  28. data/lib/guile/2.2/ccache/ice-9/atomic.go +0 -0
  29. data/lib/guile/2.2/ccache/ice-9/binary-ports.go +0 -0
  30. data/lib/guile/2.2/ccache/ice-9/boot-9.go +0 -0
  31. data/lib/guile/2.2/ccache/ice-9/buffered-input.go +0 -0
  32. data/lib/guile/2.2/ccache/ice-9/calling.go +0 -0
  33. data/lib/guile/2.2/ccache/ice-9/channel.go +0 -0
  34. data/lib/guile/2.2/ccache/ice-9/command-line.go +0 -0
  35. data/lib/guile/2.2/ccache/ice-9/common-list.go +0 -0
  36. data/lib/guile/2.2/ccache/ice-9/control.go +0 -0
  37. data/lib/guile/2.2/ccache/ice-9/curried-definitions.go +0 -0
  38. data/lib/guile/2.2/ccache/ice-9/debug.go +0 -0
  39. data/lib/guile/2.2/ccache/ice-9/deprecated.go +0 -0
  40. data/lib/guile/2.2/ccache/ice-9/documentation.go +0 -0
  41. data/lib/guile/2.2/ccache/ice-9/eval-string.go +0 -0
  42. data/lib/guile/2.2/ccache/ice-9/eval.go +0 -0
  43. data/lib/guile/2.2/ccache/ice-9/expect.go +0 -0
  44. data/lib/guile/2.2/ccache/ice-9/fdes-finalizers.go +0 -0
  45. data/lib/guile/2.2/ccache/ice-9/format.go +0 -0
  46. data/lib/guile/2.2/ccache/ice-9/ftw.go +0 -0
  47. data/lib/guile/2.2/ccache/ice-9/futures.go +0 -0
  48. data/lib/guile/2.2/ccache/ice-9/gap-buffer.go +0 -0
  49. data/lib/guile/2.2/ccache/ice-9/getopt-long.go +0 -0
  50. data/lib/guile/2.2/ccache/ice-9/hash-table.go +0 -0
  51. data/lib/guile/2.2/ccache/ice-9/hcons.go +0 -0
  52. data/lib/guile/2.2/ccache/ice-9/history.go +0 -0
  53. data/lib/guile/2.2/ccache/ice-9/i18n.go +0 -0
  54. data/lib/guile/2.2/ccache/ice-9/iconv.go +0 -0
  55. data/lib/guile/2.2/ccache/ice-9/lineio.go +0 -0
  56. data/lib/guile/2.2/ccache/ice-9/list.go +0 -0
  57. data/lib/guile/2.2/ccache/ice-9/local-eval.go +0 -0
  58. data/lib/guile/2.2/ccache/ice-9/ls.go +0 -0
  59. data/lib/guile/2.2/ccache/ice-9/mapping.go +0 -0
  60. data/lib/guile/2.2/ccache/ice-9/match.go +0 -0
  61. data/lib/guile/2.2/ccache/ice-9/networking.go +0 -0
  62. data/lib/guile/2.2/ccache/ice-9/null.go +0 -0
  63. data/lib/guile/2.2/ccache/ice-9/occam-channel.go +0 -0
  64. data/lib/guile/2.2/ccache/ice-9/optargs.go +0 -0
  65. data/lib/guile/2.2/ccache/ice-9/peg/cache.go +0 -0
  66. data/lib/guile/2.2/ccache/ice-9/peg/codegen.go +0 -0
  67. data/lib/guile/2.2/ccache/ice-9/peg/simplify-tree.go +0 -0
  68. data/lib/guile/2.2/ccache/ice-9/peg/string-peg.go +0 -0
  69. data/lib/guile/2.2/ccache/ice-9/peg/using-parsers.go +0 -0
  70. data/lib/guile/2.2/ccache/ice-9/peg.go +0 -0
  71. data/lib/guile/2.2/ccache/ice-9/poe.go +0 -0
  72. data/lib/guile/2.2/ccache/ice-9/poll.go +0 -0
  73. data/lib/guile/2.2/ccache/ice-9/popen.go +0 -0
  74. data/lib/guile/2.2/ccache/ice-9/ports.go +0 -0
  75. data/lib/guile/2.2/ccache/ice-9/posix.go +0 -0
  76. data/lib/guile/2.2/ccache/ice-9/pretty-print.go +0 -0
  77. data/lib/guile/2.2/ccache/ice-9/psyntax-pp.go +0 -0
  78. data/lib/guile/2.2/ccache/ice-9/q.go +0 -0
  79. data/lib/guile/2.2/ccache/ice-9/r5rs.go +0 -0
  80. data/lib/guile/2.2/ccache/ice-9/rdelim.go +0 -0
  81. data/lib/guile/2.2/ccache/ice-9/receive.go +0 -0
  82. data/lib/guile/2.2/ccache/ice-9/regex.go +0 -0
  83. data/lib/guile/2.2/ccache/ice-9/runq.go +0 -0
  84. data/lib/guile/2.2/ccache/ice-9/rw.go +0 -0
  85. data/lib/guile/2.2/ccache/ice-9/safe-r5rs.go +0 -0
  86. data/lib/guile/2.2/ccache/ice-9/safe.go +0 -0
  87. data/lib/guile/2.2/ccache/ice-9/sandbox.go +0 -0
  88. data/lib/guile/2.2/ccache/ice-9/save-stack.go +0 -0
  89. data/lib/guile/2.2/ccache/ice-9/scm-style-repl.go +0 -0
  90. data/lib/guile/2.2/ccache/ice-9/serialize.go +0 -0
  91. data/lib/guile/2.2/ccache/ice-9/session.go +0 -0
  92. data/lib/guile/2.2/ccache/ice-9/slib.go +0 -0
  93. data/lib/guile/2.2/ccache/ice-9/stack-catch.go +0 -0
  94. data/lib/guile/2.2/ccache/ice-9/streams.go +0 -0
  95. data/lib/guile/2.2/ccache/ice-9/string-fun.go +0 -0
  96. data/lib/guile/2.2/ccache/ice-9/suspendable-ports.go +0 -0
  97. data/lib/guile/2.2/ccache/ice-9/syncase.go +0 -0
  98. data/lib/guile/2.2/ccache/ice-9/textual-ports.go +0 -0
  99. data/lib/guile/2.2/ccache/ice-9/threads.go +0 -0
  100. data/lib/guile/2.2/ccache/ice-9/time.go +0 -0
  101. data/lib/guile/2.2/ccache/ice-9/top-repl.go +0 -0
  102. data/lib/guile/2.2/ccache/ice-9/unicode.go +0 -0
  103. data/lib/guile/2.2/ccache/ice-9/vlist.go +0 -0
  104. data/lib/guile/2.2/ccache/ice-9/weak-vector.go +0 -0
  105. data/lib/guile/2.2/ccache/language/brainfuck/compile-scheme.go +0 -0
  106. data/lib/guile/2.2/ccache/language/brainfuck/compile-tree-il.go +0 -0
  107. data/lib/guile/2.2/ccache/language/brainfuck/parse.go +0 -0
  108. data/lib/guile/2.2/ccache/language/brainfuck/spec.go +0 -0
  109. data/lib/guile/2.2/ccache/language/bytecode/spec.go +0 -0
  110. data/lib/guile/2.2/ccache/language/bytecode.go +0 -0
  111. data/lib/guile/2.2/ccache/language/cps/closure-conversion.go +0 -0
  112. data/lib/guile/2.2/ccache/language/cps/compile-bytecode.go +0 -0
  113. data/lib/guile/2.2/ccache/language/cps/constructors.go +0 -0
  114. data/lib/guile/2.2/ccache/language/cps/contification.go +0 -0
  115. data/lib/guile/2.2/ccache/language/cps/cse.go +0 -0
  116. data/lib/guile/2.2/ccache/language/cps/dce.go +0 -0
  117. data/lib/guile/2.2/ccache/language/cps/effects-analysis.go +0 -0
  118. data/lib/guile/2.2/ccache/language/cps/elide-values.go +0 -0
  119. data/lib/guile/2.2/ccache/language/cps/handle-interrupts.go +0 -0
  120. data/lib/guile/2.2/ccache/language/cps/intmap.go +0 -0
  121. data/lib/guile/2.2/ccache/language/cps/intset.go +0 -0
  122. data/lib/guile/2.2/ccache/language/cps/licm.go +0 -0
  123. data/lib/guile/2.2/ccache/language/cps/optimize.go +0 -0
  124. data/lib/guile/2.2/ccache/language/cps/peel-loops.go +0 -0
  125. data/lib/guile/2.2/ccache/language/cps/primitives.go +0 -0
  126. data/lib/guile/2.2/ccache/language/cps/prune-bailouts.go +0 -0
  127. data/lib/guile/2.2/ccache/language/cps/prune-top-level-scopes.go +0 -0
  128. data/lib/guile/2.2/ccache/language/cps/reify-primitives.go +0 -0
  129. data/lib/guile/2.2/ccache/language/cps/renumber.go +0 -0
  130. data/lib/guile/2.2/ccache/language/cps/rotate-loops.go +0 -0
  131. data/lib/guile/2.2/ccache/language/cps/self-references.go +0 -0
  132. data/lib/guile/2.2/ccache/language/cps/simplify.go +0 -0
  133. data/lib/guile/2.2/ccache/language/cps/slot-allocation.go +0 -0
  134. data/lib/guile/2.2/ccache/language/cps/spec.go +0 -0
  135. data/lib/guile/2.2/ccache/language/cps/specialize-numbers.go +0 -0
  136. data/lib/guile/2.2/ccache/language/cps/specialize-primcalls.go +0 -0
  137. data/lib/guile/2.2/ccache/language/cps/split-rec.go +0 -0
  138. data/lib/guile/2.2/ccache/language/cps/type-checks.go +0 -0
  139. data/lib/guile/2.2/ccache/language/cps/type-fold.go +0 -0
  140. data/lib/guile/2.2/ccache/language/cps/types.go +0 -0
  141. data/lib/guile/2.2/ccache/language/cps/utils.go +0 -0
  142. data/lib/guile/2.2/ccache/language/cps/verify.go +0 -0
  143. data/lib/guile/2.2/ccache/language/cps/with-cps.go +0 -0
  144. data/lib/guile/2.2/ccache/language/cps.go +0 -0
  145. data/lib/guile/2.2/ccache/language/ecmascript/array.go +0 -0
  146. data/lib/guile/2.2/ccache/language/ecmascript/base.go +0 -0
  147. data/lib/guile/2.2/ccache/language/ecmascript/compile-tree-il.go +0 -0
  148. data/lib/guile/2.2/ccache/language/ecmascript/function.go +0 -0
  149. data/lib/guile/2.2/ccache/language/ecmascript/impl.go +0 -0
  150. data/lib/guile/2.2/ccache/language/ecmascript/parse.go +0 -0
  151. data/lib/guile/2.2/ccache/language/ecmascript/spec.go +0 -0
  152. data/lib/guile/2.2/ccache/language/ecmascript/tokenize.go +0 -0
  153. data/lib/guile/2.2/ccache/language/elisp/bindings.go +0 -0
  154. data/lib/guile/2.2/ccache/language/elisp/boot.go +0 -0
  155. data/lib/guile/2.2/ccache/language/elisp/compile-tree-il.go +0 -0
  156. data/lib/guile/2.2/ccache/language/elisp/falias.go +0 -0
  157. data/lib/guile/2.2/ccache/language/elisp/lexer.go +0 -0
  158. data/lib/guile/2.2/ccache/language/elisp/parser.go +0 -0
  159. data/lib/guile/2.2/ccache/language/elisp/runtime/function-slot.go +0 -0
  160. data/lib/guile/2.2/ccache/language/elisp/runtime/value-slot.go +0 -0
  161. data/lib/guile/2.2/ccache/language/elisp/runtime.go +0 -0
  162. data/lib/guile/2.2/ccache/language/elisp/spec.go +0 -0
  163. data/lib/guile/2.2/ccache/language/scheme/compile-tree-il.go +0 -0
  164. data/lib/guile/2.2/ccache/language/scheme/decompile-tree-il.go +0 -0
  165. data/lib/guile/2.2/ccache/language/scheme/spec.go +0 -0
  166. data/lib/guile/2.2/ccache/language/tree-il/analyze.go +0 -0
  167. data/lib/guile/2.2/ccache/language/tree-il/canonicalize.go +0 -0
  168. data/lib/guile/2.2/ccache/language/tree-il/compile-cps.go +0 -0
  169. data/lib/guile/2.2/ccache/language/tree-il/debug.go +0 -0
  170. data/lib/guile/2.2/ccache/language/tree-il/effects.go +0 -0
  171. data/lib/guile/2.2/ccache/language/tree-il/fix-letrec.go +0 -0
  172. data/lib/guile/2.2/ccache/language/tree-il/optimize.go +0 -0
  173. data/lib/guile/2.2/ccache/language/tree-il/peval.go +0 -0
  174. data/lib/guile/2.2/ccache/language/tree-il/primitives.go +0 -0
  175. data/lib/guile/2.2/ccache/language/tree-il/spec.go +0 -0
  176. data/lib/guile/2.2/ccache/language/tree-il.go +0 -0
  177. data/lib/guile/2.2/ccache/language/value/spec.go +0 -0
  178. data/lib/guile/2.2/ccache/oop/goops/accessors.go +0 -0
  179. data/lib/guile/2.2/ccache/oop/goops/active-slot.go +0 -0
  180. data/lib/guile/2.2/ccache/oop/goops/composite-slot.go +0 -0
  181. data/lib/guile/2.2/ccache/oop/goops/describe.go +0 -0
  182. data/lib/guile/2.2/ccache/oop/goops/internal.go +0 -0
  183. data/lib/guile/2.2/ccache/oop/goops/save.go +0 -0
  184. data/lib/guile/2.2/ccache/oop/goops/simple.go +0 -0
  185. data/lib/guile/2.2/ccache/oop/goops/stklos.go +0 -0
  186. data/lib/guile/2.2/ccache/oop/goops.go +0 -0
  187. data/lib/guile/2.2/ccache/rnrs/arithmetic/bitwise.go +0 -0
  188. data/lib/guile/2.2/ccache/rnrs/arithmetic/fixnums.go +0 -0
  189. data/lib/guile/2.2/ccache/rnrs/arithmetic/flonums.go +0 -0
  190. data/lib/guile/2.2/ccache/rnrs/base.go +0 -0
  191. data/lib/guile/2.2/ccache/rnrs/bytevectors.go +0 -0
  192. data/lib/guile/2.2/ccache/rnrs/conditions.go +0 -0
  193. data/lib/guile/2.2/ccache/rnrs/control.go +0 -0
  194. data/lib/guile/2.2/ccache/rnrs/enums.go +0 -0
  195. data/lib/guile/2.2/ccache/rnrs/eval.go +0 -0
  196. data/lib/guile/2.2/ccache/rnrs/exceptions.go +0 -0
  197. data/lib/guile/2.2/ccache/rnrs/files.go +0 -0
  198. data/lib/guile/2.2/ccache/rnrs/hashtables.go +0 -0
  199. data/lib/guile/2.2/ccache/rnrs/io/ports.go +0 -0
  200. data/lib/guile/2.2/ccache/rnrs/io/simple.go +0 -0
  201. data/lib/guile/2.2/ccache/rnrs/lists.go +0 -0
  202. data/lib/guile/2.2/ccache/rnrs/mutable-pairs.go +0 -0
  203. data/lib/guile/2.2/ccache/rnrs/mutable-strings.go +0 -0
  204. data/lib/guile/2.2/ccache/rnrs/programs.go +0 -0
  205. data/lib/guile/2.2/ccache/rnrs/r5rs.go +0 -0
  206. data/lib/guile/2.2/ccache/rnrs/records/inspection.go +0 -0
  207. data/lib/guile/2.2/ccache/rnrs/records/procedural.go +0 -0
  208. data/lib/guile/2.2/ccache/rnrs/records/syntactic.go +0 -0
  209. data/lib/guile/2.2/ccache/rnrs/sorting.go +0 -0
  210. data/lib/guile/2.2/ccache/rnrs/syntax-case.go +0 -0
  211. data/lib/guile/2.2/ccache/rnrs/unicode.go +0 -0
  212. data/lib/guile/2.2/ccache/rnrs.go +0 -0
  213. data/lib/guile/2.2/ccache/scripts/api-diff.go +0 -0
  214. data/lib/guile/2.2/ccache/scripts/autofrisk.go +0 -0
  215. data/lib/guile/2.2/ccache/scripts/compile.go +0 -0
  216. data/lib/guile/2.2/ccache/scripts/disassemble.go +0 -0
  217. data/lib/guile/2.2/ccache/scripts/display-commentary.go +0 -0
  218. data/lib/guile/2.2/ccache/scripts/doc-snarf.go +0 -0
  219. data/lib/guile/2.2/ccache/scripts/frisk.go +0 -0
  220. data/lib/guile/2.2/ccache/scripts/generate-autoload.go +0 -0
  221. data/lib/guile/2.2/ccache/scripts/help.go +0 -0
  222. data/lib/guile/2.2/ccache/scripts/lint.go +0 -0
  223. data/lib/guile/2.2/ccache/scripts/list.go +0 -0
  224. data/lib/guile/2.2/ccache/scripts/punify.go +0 -0
  225. data/lib/guile/2.2/ccache/scripts/read-rfc822.go +0 -0
  226. data/lib/guile/2.2/ccache/scripts/read-scheme-source.go +0 -0
  227. data/lib/guile/2.2/ccache/scripts/read-text-outline.go +0 -0
  228. data/lib/guile/2.2/ccache/scripts/scan-api.go +0 -0
  229. data/lib/guile/2.2/ccache/scripts/snarf-check-and-output-texi.go +0 -0
  230. data/lib/guile/2.2/ccache/scripts/snarf-guile-m4-docs.go +0 -0
  231. data/lib/guile/2.2/ccache/scripts/summarize-guile-TODO.go +0 -0
  232. data/lib/guile/2.2/ccache/scripts/use2dot.go +0 -0
  233. data/lib/guile/2.2/ccache/srfi/srfi-1.go +0 -0
  234. data/lib/guile/2.2/ccache/srfi/srfi-10.go +0 -0
  235. data/lib/guile/2.2/ccache/srfi/srfi-11.go +0 -0
  236. data/lib/guile/2.2/ccache/srfi/srfi-111.go +0 -0
  237. data/lib/guile/2.2/ccache/srfi/srfi-13.go +0 -0
  238. data/lib/guile/2.2/ccache/srfi/srfi-14.go +0 -0
  239. data/lib/guile/2.2/ccache/srfi/srfi-16.go +0 -0
  240. data/lib/guile/2.2/ccache/srfi/srfi-17.go +0 -0
  241. data/lib/guile/2.2/ccache/srfi/srfi-18.go +0 -0
  242. data/lib/guile/2.2/ccache/srfi/srfi-19.go +0 -0
  243. data/lib/guile/2.2/ccache/srfi/srfi-2.go +0 -0
  244. data/lib/guile/2.2/ccache/srfi/srfi-26.go +0 -0
  245. data/lib/guile/2.2/ccache/srfi/srfi-27.go +0 -0
  246. data/lib/guile/2.2/ccache/srfi/srfi-28.go +0 -0
  247. data/lib/guile/2.2/ccache/srfi/srfi-31.go +0 -0
  248. data/lib/guile/2.2/ccache/srfi/srfi-34.go +0 -0
  249. data/lib/guile/2.2/ccache/srfi/srfi-35.go +0 -0
  250. data/lib/guile/2.2/ccache/srfi/srfi-37.go +0 -0
  251. data/lib/guile/2.2/ccache/srfi/srfi-38.go +0 -0
  252. data/lib/guile/2.2/ccache/srfi/srfi-39.go +0 -0
  253. data/lib/guile/2.2/ccache/srfi/srfi-4/gnu.go +0 -0
  254. data/lib/guile/2.2/ccache/srfi/srfi-4.go +0 -0
  255. data/lib/guile/2.2/ccache/srfi/srfi-41.go +0 -0
  256. data/lib/guile/2.2/ccache/srfi/srfi-42.go +0 -0
  257. data/lib/guile/2.2/ccache/srfi/srfi-43.go +0 -0
  258. data/lib/guile/2.2/ccache/srfi/srfi-45.go +0 -0
  259. data/lib/guile/2.2/ccache/srfi/srfi-6.go +0 -0
  260. data/lib/guile/2.2/ccache/srfi/srfi-60.go +0 -0
  261. data/lib/guile/2.2/ccache/srfi/srfi-64.go +0 -0
  262. data/lib/guile/2.2/ccache/srfi/srfi-67.go +0 -0
  263. data/lib/guile/2.2/ccache/srfi/srfi-69.go +0 -0
  264. data/lib/guile/2.2/ccache/srfi/srfi-71.go +0 -0
  265. data/lib/guile/2.2/ccache/srfi/srfi-8.go +0 -0
  266. data/lib/guile/2.2/ccache/srfi/srfi-88.go +0 -0
  267. data/lib/guile/2.2/ccache/srfi/srfi-9/gnu.go +0 -0
  268. data/lib/guile/2.2/ccache/srfi/srfi-9.go +0 -0
  269. data/lib/guile/2.2/ccache/srfi/srfi-98.go +0 -0
  270. data/lib/guile/2.2/ccache/statprof.go +0 -0
  271. data/lib/guile/2.2/ccache/sxml/apply-templates.go +0 -0
  272. data/lib/guile/2.2/ccache/sxml/fold.go +0 -0
  273. data/lib/guile/2.2/ccache/sxml/match.go +0 -0
  274. data/lib/guile/2.2/ccache/sxml/simple.go +0 -0
  275. data/lib/guile/2.2/ccache/sxml/ssax/input-parse.go +0 -0
  276. data/lib/guile/2.2/ccache/sxml/ssax.go +0 -0
  277. data/lib/guile/2.2/ccache/sxml/transform.go +0 -0
  278. data/lib/guile/2.2/ccache/sxml/xpath.go +0 -0
  279. data/lib/guile/2.2/ccache/system/base/ck.go +0 -0
  280. data/lib/guile/2.2/ccache/system/base/compile.go +0 -0
  281. data/lib/guile/2.2/ccache/system/base/lalr.go +0 -0
  282. data/lib/guile/2.2/ccache/system/base/language.go +0 -0
  283. data/lib/guile/2.2/ccache/system/base/message.go +0 -0
  284. data/lib/guile/2.2/ccache/system/base/pmatch.go +0 -0
  285. data/lib/guile/2.2/ccache/system/base/syntax.go +0 -0
  286. data/lib/guile/2.2/ccache/system/base/target.go +0 -0
  287. data/lib/guile/2.2/ccache/system/base/types.go +0 -0
  288. data/lib/guile/2.2/ccache/system/foreign-object.go +0 -0
  289. data/lib/guile/2.2/ccache/system/foreign.go +0 -0
  290. data/lib/guile/2.2/ccache/system/repl/command.go +0 -0
  291. data/lib/guile/2.2/ccache/system/repl/common.go +0 -0
  292. data/lib/guile/2.2/ccache/system/repl/coop-server.go +0 -0
  293. data/lib/guile/2.2/ccache/system/repl/debug.go +0 -0
  294. data/lib/guile/2.2/ccache/system/repl/error-handling.go +0 -0
  295. data/lib/guile/2.2/ccache/system/repl/repl.go +0 -0
  296. data/lib/guile/2.2/ccache/system/repl/server.go +0 -0
  297. data/lib/guile/2.2/ccache/system/syntax.go +0 -0
  298. data/lib/guile/2.2/ccache/system/vm/assembler.go +0 -0
  299. data/lib/guile/2.2/ccache/system/vm/coverage.go +0 -0
  300. data/lib/guile/2.2/ccache/system/vm/debug.go +0 -0
  301. data/lib/guile/2.2/ccache/system/vm/disassembler.go +0 -0
  302. data/lib/guile/2.2/ccache/system/vm/dwarf.go +0 -0
  303. data/lib/guile/2.2/ccache/system/vm/elf.go +0 -0
  304. data/lib/guile/2.2/ccache/system/vm/frame.go +0 -0
  305. data/lib/guile/2.2/ccache/system/vm/inspect.go +0 -0
  306. data/lib/guile/2.2/ccache/system/vm/linker.go +0 -0
  307. data/lib/guile/2.2/ccache/system/vm/loader.go +0 -0
  308. data/lib/guile/2.2/ccache/system/vm/program.go +0 -0
  309. data/lib/guile/2.2/ccache/system/vm/trace.go +0 -0
  310. data/lib/guile/2.2/ccache/system/vm/trap-state.go +0 -0
  311. data/lib/guile/2.2/ccache/system/vm/traps.go +0 -0
  312. data/lib/guile/2.2/ccache/system/vm/vm.go +0 -0
  313. data/lib/guile/2.2/ccache/system/xref.go +0 -0
  314. data/lib/guile/2.2/ccache/texinfo/docbook.go +0 -0
  315. data/lib/guile/2.2/ccache/texinfo/html.go +0 -0
  316. data/lib/guile/2.2/ccache/texinfo/indexing.go +0 -0
  317. data/lib/guile/2.2/ccache/texinfo/plain-text.go +0 -0
  318. data/lib/guile/2.2/ccache/texinfo/reflection.go +0 -0
  319. data/lib/guile/2.2/ccache/texinfo/serialize.go +0 -0
  320. data/lib/guile/2.2/ccache/texinfo/string-utils.go +0 -0
  321. data/lib/guile/2.2/ccache/texinfo.go +0 -0
  322. data/lib/guile/2.2/ccache/web/client.go +0 -0
  323. data/lib/guile/2.2/ccache/web/http.go +0 -0
  324. data/lib/guile/2.2/ccache/web/request.go +0 -0
  325. data/lib/guile/2.2/ccache/web/response.go +0 -0
  326. data/lib/guile/2.2/ccache/web/server/http.go +0 -0
  327. data/lib/guile/2.2/ccache/web/server.go +0 -0
  328. data/lib/guile/2.2/ccache/web/uri.go +0 -0
  329. data/lib/guile.rb +19 -0
  330. data/lib/lilypond/2.24.1/ccache/lily/accreg.go +0 -0
  331. data/lib/lilypond/2.24.1/ccache/lily/auto-beam.go +0 -0
  332. data/lib/lilypond/2.24.1/ccache/lily/autochange.go +0 -0
  333. data/lib/lilypond/2.24.1/ccache/lily/backend-library.go +0 -0
  334. data/lib/lilypond/2.24.1/ccache/lily/bar-line.go +0 -0
  335. data/lib/lilypond/2.24.1/ccache/lily/breath.go +0 -0
  336. data/lib/lilypond/2.24.1/ccache/lily/c++.go +0 -0
  337. data/lib/lilypond/2.24.1/ccache/lily/chord-entry.go +0 -0
  338. data/lib/lilypond/2.24.1/ccache/lily/chord-ignatzek-names.go +0 -0
  339. data/lib/lilypond/2.24.1/ccache/lily/chord-name.go +0 -0
  340. data/lib/lilypond/2.24.1/ccache/lily/clip-region.go +0 -0
  341. data/lib/lilypond/2.24.1/ccache/lily/color.go +0 -0
  342. data/lib/lilypond/2.24.1/ccache/lily/curried-definitions.go +0 -0
  343. data/lib/lilypond/2.24.1/ccache/lily/define-context-properties.go +0 -0
  344. data/lib/lilypond/2.24.1/ccache/lily/define-event-classes.go +0 -0
  345. data/lib/lilypond/2.24.1/ccache/lily/define-grob-interfaces.go +0 -0
  346. data/lib/lilypond/2.24.1/ccache/lily/define-grob-properties.go +0 -0
  347. data/lib/lilypond/2.24.1/ccache/lily/define-grobs.go +0 -0
  348. data/lib/lilypond/2.24.1/ccache/lily/define-markup-commands.go +0 -0
  349. data/lib/lilypond/2.24.1/ccache/lily/define-music-callbacks.go +0 -0
  350. data/lib/lilypond/2.24.1/ccache/lily/define-music-display-methods.go +0 -0
  351. data/lib/lilypond/2.24.1/ccache/lily/define-music-properties.go +0 -0
  352. data/lib/lilypond/2.24.1/ccache/lily/define-music-types.go +0 -0
  353. data/lib/lilypond/2.24.1/ccache/lily/define-note-names.go +0 -0
  354. data/lib/lilypond/2.24.1/ccache/lily/define-stencil-commands.go +0 -0
  355. data/lib/lilypond/2.24.1/ccache/lily/define-woodwind-diagrams.go +0 -0
  356. data/lib/lilypond/2.24.1/ccache/lily/display-lily.go +0 -0
  357. data/lib/lilypond/2.24.1/ccache/lily/display-woodwind-diagrams.go +0 -0
  358. data/lib/lilypond/2.24.1/ccache/lily/file-cache.go +0 -0
  359. data/lib/lilypond/2.24.1/ccache/lily/flag-styles.go +0 -0
  360. data/lib/lilypond/2.24.1/ccache/lily/font-encodings.go +0 -0
  361. data/lib/lilypond/2.24.1/ccache/lily/font.go +0 -0
  362. data/lib/lilypond/2.24.1/ccache/lily/framework-cairo.go +0 -0
  363. data/lib/lilypond/2.24.1/ccache/lily/framework-ps.go +0 -0
  364. data/lib/lilypond/2.24.1/ccache/lily/framework-svg.go +0 -0
  365. data/lib/lilypond/2.24.1/ccache/lily/fret-diagrams.go +0 -0
  366. data/lib/lilypond/2.24.1/ccache/lily/graphviz.go +0 -0
  367. data/lib/lilypond/2.24.1/ccache/lily/harp-pedals.go +0 -0
  368. data/lib/lilypond/2.24.1/ccache/lily/layout-beam.go +0 -0
  369. data/lib/lilypond/2.24.1/ccache/lily/layout-slur.go +0 -0
  370. data/lib/lilypond/2.24.1/ccache/lily/lily-library.go +0 -0
  371. data/lib/lilypond/2.24.1/ccache/lily/lily.go +0 -0
  372. data/lib/lilypond/2.24.1/ccache/lily/ly-syntax-constructors.go +0 -0
  373. data/lib/lilypond/2.24.1/ccache/lily/markup-macros.go +0 -0
  374. data/lib/lilypond/2.24.1/ccache/lily/markup.go +0 -0
  375. data/lib/lilypond/2.24.1/ccache/lily/midi.go +0 -0
  376. data/lib/lilypond/2.24.1/ccache/lily/modal-transforms.go +0 -0
  377. data/lib/lilypond/2.24.1/ccache/lily/music-functions.go +0 -0
  378. data/lib/lilypond/2.24.1/ccache/lily/output-lib.go +0 -0
  379. data/lib/lilypond/2.24.1/ccache/lily/output-ps.go +0 -0
  380. data/lib/lilypond/2.24.1/ccache/lily/output-svg.go +0 -0
  381. data/lib/lilypond/2.24.1/ccache/lily/page.go +0 -0
  382. data/lib/lilypond/2.24.1/ccache/lily/paper-system.go +0 -0
  383. data/lib/lilypond/2.24.1/ccache/lily/paper.go +0 -0
  384. data/lib/lilypond/2.24.1/ccache/lily/parser-clef.go +0 -0
  385. data/lib/lilypond/2.24.1/ccache/lily/parser-ly-from-scheme.go +0 -0
  386. data/lib/lilypond/2.24.1/ccache/lily/part-combiner.go +0 -0
  387. data/lib/lilypond/2.24.1/ccache/lily/predefined-fretboards.go +0 -0
  388. data/lib/lilypond/2.24.1/ccache/lily/ps-to-png.go +0 -0
  389. data/lib/lilypond/2.24.1/ccache/lily/scheme-engravers.go +0 -0
  390. data/lib/lilypond/2.24.1/ccache/lily/scheme-performers.go +0 -0
  391. data/lib/lilypond/2.24.1/ccache/lily/script.go +0 -0
  392. data/lib/lilypond/2.24.1/ccache/lily/skyline.go +0 -0
  393. data/lib/lilypond/2.24.1/ccache/lily/song-util.go +0 -0
  394. data/lib/lilypond/2.24.1/ccache/lily/song.go +0 -0
  395. data/lib/lilypond/2.24.1/ccache/lily/stencil.go +0 -0
  396. data/lib/lilypond/2.24.1/ccache/lily/tablature.go +0 -0
  397. data/lib/lilypond/2.24.1/ccache/lily/time-signature-settings.go +0 -0
  398. data/lib/lilypond/2.24.1/ccache/lily/time-signature.go +0 -0
  399. data/lib/lilypond/2.24.1/ccache/lily/titling.go +0 -0
  400. data/lib/lilypond/2.24.1/ccache/lily/to-xml.go +0 -0
  401. data/lib/lilypond/2.24.1/ccache/lily/translation-functions.go +0 -0
  402. data/lib/lilypond/builder.rb +161 -0
  403. data/lib/lilypond-ruby.rb +18 -3
  404. data/share/emacs/site-lisp/lilypond-font-lock.el +208 -0
  405. data/share/emacs/site-lisp/lilypond-indent.el +605 -0
  406. data/share/emacs/site-lisp/lilypond-init.el +21 -0
  407. data/share/emacs/site-lisp/lilypond-mode.el +1204 -0
  408. data/share/emacs/site-lisp/lilypond-song.el +556 -0
  409. data/share/emacs/site-lisp/lilypond-what-beat.el +279 -0
  410. data/share/emacs/site-lisp/lilypond-words.el +1428 -0
  411. data/share/guile/2.2/guile-procedures.txt +8860 -0
  412. data/share/guile/2.2/ice-9/and-let-star.scm +73 -0
  413. data/share/guile/2.2/ice-9/arrays.scm +70 -0
  414. data/share/guile/2.2/ice-9/atomic.scm +38 -0
  415. data/share/guile/2.2/ice-9/binary-ports.scm +53 -0
  416. data/share/guile/2.2/ice-9/boot-9.scm +4131 -0
  417. data/share/guile/2.2/ice-9/buffered-input.scm +109 -0
  418. data/share/guile/2.2/ice-9/calling.scm +326 -0
  419. data/share/guile/2.2/ice-9/channel.scm +170 -0
  420. data/share/guile/2.2/ice-9/command-line.scm +477 -0
  421. data/share/guile/2.2/ice-9/common-list.scm +278 -0
  422. data/share/guile/2.2/ice-9/control.scm +110 -0
  423. data/share/guile/2.2/ice-9/curried-definitions.scm +57 -0
  424. data/share/guile/2.2/ice-9/debug.scm +25 -0
  425. data/share/guile/2.2/ice-9/deprecated.scm +93 -0
  426. data/share/guile/2.2/ice-9/documentation.scm +203 -0
  427. data/share/guile/2.2/ice-9/eval-string.scm +90 -0
  428. data/share/guile/2.2/ice-9/eval.scm +723 -0
  429. data/share/guile/2.2/ice-9/expect.scm +171 -0
  430. data/share/guile/2.2/ice-9/fdes-finalizers.scm +25 -0
  431. data/share/guile/2.2/ice-9/format.scm +1626 -0
  432. data/share/guile/2.2/ice-9/ftw.scm +564 -0
  433. data/share/guile/2.2/ice-9/futures.scm +308 -0
  434. data/share/guile/2.2/ice-9/gap-buffer.scm +283 -0
  435. data/share/guile/2.2/ice-9/getopt-long.scm +371 -0
  436. data/share/guile/2.2/ice-9/hash-table.scm +45 -0
  437. data/share/guile/2.2/ice-9/hcons.scm +80 -0
  438. data/share/guile/2.2/ice-9/history.scm +65 -0
  439. data/share/guile/2.2/ice-9/i18n.scm +531 -0
  440. data/share/guile/2.2/ice-9/iconv.scm +95 -0
  441. data/share/guile/2.2/ice-9/lineio.scm +115 -0
  442. data/share/guile/2.2/ice-9/list.scm +36 -0
  443. data/share/guile/2.2/ice-9/local-eval.scm +261 -0
  444. data/share/guile/2.2/ice-9/ls.scm +94 -0
  445. data/share/guile/2.2/ice-9/mapping.scm +118 -0
  446. data/share/guile/2.2/ice-9/match.scm +59 -0
  447. data/share/guile/2.2/ice-9/match.upstream.scm +917 -0
  448. data/share/guile/2.2/ice-9/networking.scm +94 -0
  449. data/share/guile/2.2/ice-9/null.scm +34 -0
  450. data/share/guile/2.2/ice-9/occam-channel.scm +261 -0
  451. data/share/guile/2.2/ice-9/optargs.scm +381 -0
  452. data/share/guile/2.2/ice-9/peg/cache.scm +45 -0
  453. data/share/guile/2.2/ice-9/peg/codegen.scm +359 -0
  454. data/share/guile/2.2/ice-9/peg/simplify-tree.scm +97 -0
  455. data/share/guile/2.2/ice-9/peg/string-peg.scm +273 -0
  456. data/share/guile/2.2/ice-9/peg/using-parsers.scm +116 -0
  457. data/share/guile/2.2/ice-9/peg.scm +42 -0
  458. data/share/guile/2.2/ice-9/poe.scm +116 -0
  459. data/share/guile/2.2/ice-9/poll.scm +172 -0
  460. data/share/guile/2.2/ice-9/popen.scm +178 -0
  461. data/share/guile/2.2/ice-9/ports.scm +566 -0
  462. data/share/guile/2.2/ice-9/posix.scm +75 -0
  463. data/share/guile/2.2/ice-9/pretty-print.scm +483 -0
  464. data/share/guile/2.2/ice-9/psyntax-pp.scm +3542 -0
  465. data/share/guile/2.2/ice-9/psyntax.scm +3326 -0
  466. data/share/guile/2.2/ice-9/q.scm +153 -0
  467. data/share/guile/2.2/ice-9/quasisyntax.scm +136 -0
  468. data/share/guile/2.2/ice-9/r5rs.scm +45 -0
  469. data/share/guile/2.2/ice-9/r6rs-libraries.scm +242 -0
  470. data/share/guile/2.2/ice-9/rdelim.scm +208 -0
  471. data/share/guile/2.2/ice-9/receive.scm +26 -0
  472. data/share/guile/2.2/ice-9/regex.scm +229 -0
  473. data/share/guile/2.2/ice-9/runq.scm +241 -0
  474. data/share/guile/2.2/ice-9/rw.scm +27 -0
  475. data/share/guile/2.2/ice-9/safe-r5rs.scm +145 -0
  476. data/share/guile/2.2/ice-9/safe.scm +34 -0
  477. data/share/guile/2.2/ice-9/sandbox.scm +1399 -0
  478. data/share/guile/2.2/ice-9/save-stack.scm +58 -0
  479. data/share/guile/2.2/ice-9/scm-style-repl.scm +279 -0
  480. data/share/guile/2.2/ice-9/serialize.scm +114 -0
  481. data/share/guile/2.2/ice-9/session.scm +530 -0
  482. data/share/guile/2.2/ice-9/slib.scm +33 -0
  483. data/share/guile/2.2/ice-9/stack-catch.scm +47 -0
  484. data/share/guile/2.2/ice-9/streams.scm +168 -0
  485. data/share/guile/2.2/ice-9/string-fun.scm +280 -0
  486. data/share/guile/2.2/ice-9/suspendable-ports.scm +788 -0
  487. data/share/guile/2.2/ice-9/syncase.scm +37 -0
  488. data/share/guile/2.2/ice-9/textual-ports.scm +70 -0
  489. data/share/guile/2.2/ice-9/threads.scm +392 -0
  490. data/share/guile/2.2/ice-9/time.scm +58 -0
  491. data/share/guile/2.2/ice-9/top-repl.scm +78 -0
  492. data/share/guile/2.2/ice-9/unicode.scm +26 -0
  493. data/share/guile/2.2/ice-9/vlist.scm +595 -0
  494. data/share/guile/2.2/ice-9/weak-vector.scm +31 -0
  495. data/share/guile/2.2/language/brainfuck/compile-scheme.scm +123 -0
  496. data/share/guile/2.2/language/brainfuck/compile-tree-il.scm +184 -0
  497. data/share/guile/2.2/language/brainfuck/parse.scm +95 -0
  498. data/share/guile/2.2/language/brainfuck/spec.scm +43 -0
  499. data/share/guile/2.2/language/bytecode/spec.scm +42 -0
  500. data/share/guile/2.2/language/bytecode.scm +104 -0
  501. data/share/guile/2.2/language/cps/closure-conversion.scm +848 -0
  502. data/share/guile/2.2/language/cps/compile-bytecode.scm +610 -0
  503. data/share/guile/2.2/language/cps/constructors.scm +106 -0
  504. data/share/guile/2.2/language/cps/contification.scm +448 -0
  505. data/share/guile/2.2/language/cps/cse.scm +414 -0
  506. data/share/guile/2.2/language/cps/dce.scm +363 -0
  507. data/share/guile/2.2/language/cps/effects-analysis.scm +597 -0
  508. data/share/guile/2.2/language/cps/elide-values.scm +88 -0
  509. data/share/guile/2.2/language/cps/handle-interrupts.scm +69 -0
  510. data/share/guile/2.2/language/cps/intmap.scm +765 -0
  511. data/share/guile/2.2/language/cps/intset.scm +830 -0
  512. data/share/guile/2.2/language/cps/licm.scm +308 -0
  513. data/share/guile/2.2/language/cps/optimize.scm +135 -0
  514. data/share/guile/2.2/language/cps/peel-loops.scm +287 -0
  515. data/share/guile/2.2/language/cps/primitives.scm +141 -0
  516. data/share/guile/2.2/language/cps/prune-bailouts.scm +86 -0
  517. data/share/guile/2.2/language/cps/prune-top-level-scopes.scm +63 -0
  518. data/share/guile/2.2/language/cps/reify-primitives.scm +179 -0
  519. data/share/guile/2.2/language/cps/renumber.scm +217 -0
  520. data/share/guile/2.2/language/cps/rotate-loops.scm +239 -0
  521. data/share/guile/2.2/language/cps/self-references.scm +79 -0
  522. data/share/guile/2.2/language/cps/simplify.scm +274 -0
  523. data/share/guile/2.2/language/cps/slot-allocation.scm +1058 -0
  524. data/share/guile/2.2/language/cps/spec.scm +51 -0
  525. data/share/guile/2.2/language/cps/specialize-numbers.scm +724 -0
  526. data/share/guile/2.2/language/cps/specialize-primcalls.scm +87 -0
  527. data/share/guile/2.2/language/cps/split-rec.scm +174 -0
  528. data/share/guile/2.2/language/cps/type-checks.scm +72 -0
  529. data/share/guile/2.2/language/cps/type-fold.scm +455 -0
  530. data/share/guile/2.2/language/cps/types.scm +1826 -0
  531. data/share/guile/2.2/language/cps/utils.scm +550 -0
  532. data/share/guile/2.2/language/cps/verify.scm +304 -0
  533. data/share/guile/2.2/language/cps/with-cps.scm +145 -0
  534. data/share/guile/2.2/language/cps.scm +358 -0
  535. data/share/guile/2.2/language/ecmascript/array.scm +121 -0
  536. data/share/guile/2.2/language/ecmascript/base.scm +251 -0
  537. data/share/guile/2.2/language/ecmascript/compile-tree-il.scm +576 -0
  538. data/share/guile/2.2/language/ecmascript/function.scm +78 -0
  539. data/share/guile/2.2/language/ecmascript/impl.scm +169 -0
  540. data/share/guile/2.2/language/ecmascript/parse.scm +352 -0
  541. data/share/guile/2.2/language/ecmascript/spec.scm +37 -0
  542. data/share/guile/2.2/language/ecmascript/tokenize.scm +513 -0
  543. data/share/guile/2.2/language/elisp/bindings.scm +107 -0
  544. data/share/guile/2.2/language/elisp/boot.el +617 -0
  545. data/share/guile/2.2/language/elisp/compile-tree-il.scm +812 -0
  546. data/share/guile/2.2/language/elisp/falias.scm +47 -0
  547. data/share/guile/2.2/language/elisp/lexer.scm +430 -0
  548. data/share/guile/2.2/language/elisp/parser.scm +222 -0
  549. data/share/guile/2.2/language/elisp/runtime/function-slot.scm +63 -0
  550. data/share/guile/2.2/language/elisp/runtime/value-slot.scm +24 -0
  551. data/share/guile/2.2/language/elisp/runtime.scm +153 -0
  552. data/share/guile/2.2/language/elisp/spec.scm +43 -0
  553. data/share/guile/2.2/language/scheme/compile-tree-il.scm +33 -0
  554. data/share/guile/2.2/language/scheme/decompile-tree-il.scm +796 -0
  555. data/share/guile/2.2/language/scheme/spec.scm +63 -0
  556. data/share/guile/2.2/language/tree-il/analyze.scm +1568 -0
  557. data/share/guile/2.2/language/tree-il/canonicalize.scm +82 -0
  558. data/share/guile/2.2/language/tree-il/compile-cps.scm +1149 -0
  559. data/share/guile/2.2/language/tree-il/debug.scm +246 -0
  560. data/share/guile/2.2/language/tree-il/effects.scm +591 -0
  561. data/share/guile/2.2/language/tree-il/fix-letrec.scm +314 -0
  562. data/share/guile/2.2/language/tree-il/optimize.scm +43 -0
  563. data/share/guile/2.2/language/tree-il/peval.scm +1669 -0
  564. data/share/guile/2.2/language/tree-il/primitives.scm +630 -0
  565. data/share/guile/2.2/language/tree-il/spec.scm +46 -0
  566. data/share/guile/2.2/language/tree-il.scm +630 -0
  567. data/share/guile/2.2/language/value/spec.scm +30 -0
  568. data/share/guile/2.2/oop/goops/accessors.scm +72 -0
  569. data/share/guile/2.2/oop/goops/active-slot.scm +63 -0
  570. data/share/guile/2.2/oop/goops/composite-slot.scm +83 -0
  571. data/share/guile/2.2/oop/goops/describe.scm +189 -0
  572. data/share/guile/2.2/oop/goops/internal.scm +30 -0
  573. data/share/guile/2.2/oop/goops/save.scm +874 -0
  574. data/share/guile/2.2/oop/goops/simple.scm +30 -0
  575. data/share/guile/2.2/oop/goops/stklos.scm +74 -0
  576. data/share/guile/2.2/oop/goops.scm +3176 -0
  577. data/share/guile/2.2/rnrs/arithmetic/bitwise.scm +92 -0
  578. data/share/guile/2.2/rnrs/arithmetic/fixnums.scm +291 -0
  579. data/share/guile/2.2/rnrs/arithmetic/flonums.scm +203 -0
  580. data/share/guile/2.2/rnrs/base.scm +291 -0
  581. data/share/guile/2.2/rnrs/bytevectors.scm +83 -0
  582. data/share/guile/2.2/rnrs/conditions.scm +225 -0
  583. data/share/guile/2.2/rnrs/control.scm +22 -0
  584. data/share/guile/2.2/rnrs/enums.scm +152 -0
  585. data/share/guile/2.2/rnrs/eval.scm +39 -0
  586. data/share/guile/2.2/rnrs/exceptions.scm +276 -0
  587. data/share/guile/2.2/rnrs/files.scm +96 -0
  588. data/share/guile/2.2/rnrs/hashtables.scm +190 -0
  589. data/share/guile/2.2/rnrs/io/ports.scm +554 -0
  590. data/share/guile/2.2/rnrs/io/simple.scm +167 -0
  591. data/share/guile/2.2/rnrs/lists.scm +55 -0
  592. data/share/guile/2.2/rnrs/mutable-pairs.scm +23 -0
  593. data/share/guile/2.2/rnrs/mutable-strings.scm +23 -0
  594. data/share/guile/2.2/rnrs/programs.scm +22 -0
  595. data/share/guile/2.2/rnrs/r5rs.scm +34 -0
  596. data/share/guile/2.2/rnrs/records/inspection.scm +81 -0
  597. data/share/guile/2.2/rnrs/records/procedural.scm +289 -0
  598. data/share/guile/2.2/rnrs/records/syntactic.scm +248 -0
  599. data/share/guile/2.2/rnrs/sorting.scm +27 -0
  600. data/share/guile/2.2/rnrs/syntax-case.scm +68 -0
  601. data/share/guile/2.2/rnrs/unicode.scm +104 -0
  602. data/share/guile/2.2/rnrs.scm +289 -0
  603. data/share/guile/2.2/scripts/api-diff.scm +179 -0
  604. data/share/guile/2.2/scripts/autofrisk.scm +218 -0
  605. data/share/guile/2.2/scripts/compile.scm +273 -0
  606. data/share/guile/2.2/scripts/disassemble.scm +38 -0
  607. data/share/guile/2.2/scripts/display-commentary.scm +67 -0
  608. data/share/guile/2.2/scripts/doc-snarf.scm +439 -0
  609. data/share/guile/2.2/scripts/frisk.scm +290 -0
  610. data/share/guile/2.2/scripts/generate-autoload.scm +144 -0
  611. data/share/guile/2.2/scripts/help.scm +188 -0
  612. data/share/guile/2.2/scripts/lint.scm +318 -0
  613. data/share/guile/2.2/scripts/list.scm +91 -0
  614. data/share/guile/2.2/scripts/punify.scm +87 -0
  615. data/share/guile/2.2/scripts/read-rfc822.scm +131 -0
  616. data/share/guile/2.2/scripts/read-scheme-source.scm +282 -0
  617. data/share/guile/2.2/scripts/read-text-outline.scm +253 -0
  618. data/share/guile/2.2/scripts/scan-api.scm +223 -0
  619. data/share/guile/2.2/scripts/snarf-check-and-output-texi.scm +303 -0
  620. data/share/guile/2.2/scripts/snarf-guile-m4-docs.scm +86 -0
  621. data/share/guile/2.2/scripts/summarize-guile-TODO.scm +213 -0
  622. data/share/guile/2.2/scripts/use2dot.scm +110 -0
  623. data/share/guile/2.2/srfi/srfi-1.scm +1061 -0
  624. data/share/guile/2.2/srfi/srfi-10.scm +89 -0
  625. data/share/guile/2.2/srfi/srfi-11.scm +146 -0
  626. data/share/guile/2.2/srfi/srfi-111.scm +37 -0
  627. data/share/guile/2.2/srfi/srfi-13.scm +132 -0
  628. data/share/guile/2.2/srfi/srfi-14.scm +99 -0
  629. data/share/guile/2.2/srfi/srfi-16.scm +51 -0
  630. data/share/guile/2.2/srfi/srfi-17.scm +174 -0
  631. data/share/guile/2.2/srfi/srfi-18.scm +382 -0
  632. data/share/guile/2.2/srfi/srfi-19.scm +1470 -0
  633. data/share/guile/2.2/srfi/srfi-2.scm +31 -0
  634. data/share/guile/2.2/srfi/srfi-26.scm +66 -0
  635. data/share/guile/2.2/srfi/srfi-27.scm +96 -0
  636. data/share/guile/2.2/srfi/srfi-28.scm +34 -0
  637. data/share/guile/2.2/srfi/srfi-31.scm +35 -0
  638. data/share/guile/2.2/srfi/srfi-34.scm +84 -0
  639. data/share/guile/2.2/srfi/srfi-35.scm +351 -0
  640. data/share/guile/2.2/srfi/srfi-37.scm +234 -0
  641. data/share/guile/2.2/srfi/srfi-38.scm +207 -0
  642. data/share/guile/2.2/srfi/srfi-39.scm +55 -0
  643. data/share/guile/2.2/srfi/srfi-4/gnu.scm +80 -0
  644. data/share/guile/2.2/srfi/srfi-4.scm +118 -0
  645. data/share/guile/2.2/srfi/srfi-41.scm +505 -0
  646. data/share/guile/2.2/srfi/srfi-42/ec.scm +1053 -0
  647. data/share/guile/2.2/srfi/srfi-42.scm +66 -0
  648. data/share/guile/2.2/srfi/srfi-43.scm +1077 -0
  649. data/share/guile/2.2/srfi/srfi-45.scm +93 -0
  650. data/share/guile/2.2/srfi/srfi-6.scm +29 -0
  651. data/share/guile/2.2/srfi/srfi-60.scm +73 -0
  652. data/share/guile/2.2/srfi/srfi-64/testing.scm +1040 -0
  653. data/share/guile/2.2/srfi/srfi-64.scm +55 -0
  654. data/share/guile/2.2/srfi/srfi-67/compare.scm +686 -0
  655. data/share/guile/2.2/srfi/srfi-67.scm +88 -0
  656. data/share/guile/2.2/srfi/srfi-69.scm +336 -0
  657. data/share/guile/2.2/srfi/srfi-71.scm +267 -0
  658. data/share/guile/2.2/srfi/srfi-8.scm +31 -0
  659. data/share/guile/2.2/srfi/srfi-88.scm +53 -0
  660. data/share/guile/2.2/srfi/srfi-9/gnu.scm +168 -0
  661. data/share/guile/2.2/srfi/srfi-9.scm +351 -0
  662. data/share/guile/2.2/srfi/srfi-98.scm +44 -0
  663. data/share/guile/2.2/statprof.scm +988 -0
  664. data/share/guile/2.2/sxml/apply-templates.scm +102 -0
  665. data/share/guile/2.2/sxml/fold.scm +250 -0
  666. data/share/guile/2.2/sxml/match.scm +75 -0
  667. data/share/guile/2.2/sxml/simple.scm +408 -0
  668. data/share/guile/2.2/sxml/ssax/input-parse.scm +180 -0
  669. data/share/guile/2.2/sxml/ssax.scm +265 -0
  670. data/share/guile/2.2/sxml/sxml-match.ss +1181 -0
  671. data/share/guile/2.2/sxml/transform.scm +298 -0
  672. data/share/guile/2.2/sxml/upstream/SSAX.scm +3235 -0
  673. data/share/guile/2.2/sxml/upstream/SXML-tree-trans.scm +249 -0
  674. data/share/guile/2.2/sxml/upstream/SXPath-old.scm +1216 -0
  675. data/share/guile/2.2/sxml/upstream/assert.scm +35 -0
  676. data/share/guile/2.2/sxml/upstream/input-parse.scm +326 -0
  677. data/share/guile/2.2/sxml/xpath.scm +493 -0
  678. data/share/guile/2.2/system/base/ck.scm +55 -0
  679. data/share/guile/2.2/system/base/compile.scm +282 -0
  680. data/share/guile/2.2/system/base/lalr.scm +51 -0
  681. data/share/guile/2.2/system/base/lalr.upstream.scm +2096 -0
  682. data/share/guile/2.2/system/base/language.scm +119 -0
  683. data/share/guile/2.2/system/base/message.scm +238 -0
  684. data/share/guile/2.2/system/base/pmatch.scm +68 -0
  685. data/share/guile/2.2/system/base/syntax.scm +299 -0
  686. data/share/guile/2.2/system/base/target.scm +152 -0
  687. data/share/guile/2.2/system/base/types.scm +561 -0
  688. data/share/guile/2.2/system/foreign-object.scm +91 -0
  689. data/share/guile/2.2/system/foreign.scm +200 -0
  690. data/share/guile/2.2/system/repl/command.scm +946 -0
  691. data/share/guile/2.2/system/repl/common.scm +263 -0
  692. data/share/guile/2.2/system/repl/coop-server.scm +200 -0
  693. data/share/guile/2.2/system/repl/debug.scm +210 -0
  694. data/share/guile/2.2/system/repl/describe.scm +347 -0
  695. data/share/guile/2.2/system/repl/error-handling.scm +183 -0
  696. data/share/guile/2.2/system/repl/repl.scm +233 -0
  697. data/share/guile/2.2/system/repl/server.scm +332 -0
  698. data/share/guile/2.2/system/syntax.scm +33 -0
  699. data/share/guile/2.2/system/vm/assembler.scm +2614 -0
  700. data/share/guile/2.2/system/vm/coverage.scm +351 -0
  701. data/share/guile/2.2/system/vm/debug.scm +766 -0
  702. data/share/guile/2.2/system/vm/disassembler.scm +658 -0
  703. data/share/guile/2.2/system/vm/dwarf.scm +1852 -0
  704. data/share/guile/2.2/system/vm/elf.scm +1042 -0
  705. data/share/guile/2.2/system/vm/frame.scm +485 -0
  706. data/share/guile/2.2/system/vm/inspect.scm +188 -0
  707. data/share/guile/2.2/system/vm/linker.scm +732 -0
  708. data/share/guile/2.2/system/vm/loader.scm +27 -0
  709. data/share/guile/2.2/system/vm/program.scm +312 -0
  710. data/share/guile/2.2/system/vm/trace.scm +121 -0
  711. data/share/guile/2.2/system/vm/trap-state.scm +302 -0
  712. data/share/guile/2.2/system/vm/traps.scm +608 -0
  713. data/share/guile/2.2/system/vm/vm.scm +32 -0
  714. data/share/guile/2.2/system/xref.scm +369 -0
  715. data/share/guile/2.2/texinfo/docbook.scm +240 -0
  716. data/share/guile/2.2/texinfo/html.scm +279 -0
  717. data/share/guile/2.2/texinfo/indexing.scm +75 -0
  718. data/share/guile/2.2/texinfo/plain-text.scm +322 -0
  719. data/share/guile/2.2/texinfo/reflection.scm +585 -0
  720. data/share/guile/2.2/texinfo/serialize.scm +300 -0
  721. data/share/guile/2.2/texinfo/string-utils.scm +410 -0
  722. data/share/guile/2.2/texinfo.scm +1263 -0
  723. data/share/guile/2.2/web/client.scm +513 -0
  724. data/share/guile/2.2/web/http.scm +2043 -0
  725. data/share/guile/2.2/web/request.scm +326 -0
  726. data/share/guile/2.2/web/response.scm +379 -0
  727. data/share/guile/2.2/web/server/http.scm +183 -0
  728. data/share/guile/2.2/web/server.scm +397 -0
  729. data/share/guile/2.2/web/uri.scm +552 -0
  730. data/share/lilypond/2.24.1/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-8 +0 -0
  731. data/share/lilypond/2.24.1/fontconfig/188ac73a183f12857f63bb60a4a6d603-le64.cache-8 +0 -0
  732. data/share/lilypond/2.24.1/fontconfig/32b6488e5b8292a2e95c79d947e009e8-le64.cache-8 +0 -0
  733. data/share/lilypond/2.24.1/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-8 +0 -0
  734. data/share/lilypond/2.24.1/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-8 +0 -0
  735. data/share/lilypond/2.24.1/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-8 +0 -0
  736. data/share/lilypond/2.24.1/fontconfig/57e423e26b20ab21d0f2f29c145174c3-le64.cache-8 +0 -0
  737. data/share/lilypond/2.24.1/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-8 +0 -0
  738. data/share/lilypond/2.24.1/fontconfig/826f6b6ef79022e2eac8af26bf4b62f2-le64.cache-8 +0 -0
  739. data/share/lilypond/2.24.1/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-8 +0 -0
  740. data/share/lilypond/2.24.1/fontconfig/95530828ff6c81d309f8258d8d02a23e-le64.cache-8 +0 -0
  741. data/share/lilypond/2.24.1/fontconfig/CACHEDIR.TAG +4 -0
  742. data/share/lilypond/2.24.1/fontconfig/bf3b770c553c462765856025a94f1ce6-le64.cache-8 +0 -0
  743. data/share/lilypond/2.24.1/fontconfig/c855463f699352c367813e37f3f70ea7-le64.cache-8 +0 -0
  744. data/share/lilypond/2.24.1/fontconfig/d3e5c4ee2ceb1fc347f91d4cefc53bc0-le64.cache-8 +0 -0
  745. data/share/lilypond/2.24.1/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-8 +0 -0
  746. data/share/lilypond/2.24.1/fontconfig/d82eb4fd963d448e2fcb7d7b793b5df3-le64.cache-8 +0 -0
  747. data/share/lilypond/2.24.1/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-8 +0 -0
  748. data/share/lilypond/2.24.1/fontconfig/e52a45a1c8c8fe895fc0fc8c4e6999b8-le64.cache-8 +0 -0
  749. data/share/lilypond/2.24.1/fontconfig/f1f2465696798768e9653f19e17ccdc8-le64.cache-8 +0 -0
  750. data/share/lilypond/2.24.1/fonts/00-lilypond-fonts.conf +99 -0
  751. data/share/lilypond/2.24.1/fonts/99-lilypond-fonts.conf +28 -0
  752. data/share/lilypond/2.24.1/fonts/otf/C059-BdIta.otf +0 -0
  753. data/share/lilypond/2.24.1/fonts/otf/C059-Bold.otf +0 -0
  754. data/share/lilypond/2.24.1/fonts/otf/C059-Italic.otf +0 -0
  755. data/share/lilypond/2.24.1/fonts/otf/C059-Roman.otf +0 -0
  756. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Bold.otf +0 -0
  757. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-BoldItalic.otf +0 -0
  758. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Italic.otf +0 -0
  759. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Regular.otf +0 -0
  760. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Bold.otf +0 -0
  761. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-BoldItalic.otf +0 -0
  762. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Italic.otf +0 -0
  763. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Regular.otf +0 -0
  764. data/share/lilypond/2.24.1/fonts/otf/emmentaler-11.otf +0 -0
  765. data/share/lilypond/2.24.1/fonts/otf/emmentaler-13.otf +0 -0
  766. data/share/lilypond/2.24.1/fonts/otf/emmentaler-14.otf +0 -0
  767. data/share/lilypond/2.24.1/fonts/otf/emmentaler-16.otf +0 -0
  768. data/share/lilypond/2.24.1/fonts/otf/emmentaler-18.otf +0 -0
  769. data/share/lilypond/2.24.1/fonts/otf/emmentaler-20.otf +0 -0
  770. data/share/lilypond/2.24.1/fonts/otf/emmentaler-23.otf +0 -0
  771. data/share/lilypond/2.24.1/fonts/otf/emmentaler-26.otf +0 -0
  772. data/share/lilypond/2.24.1/fonts/otf/emmentaler-brace.otf +0 -0
  773. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bold.otf +0 -0
  774. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bolditalic.otf +0 -0
  775. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-italic.otf +0 -0
  776. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-regular.otf +0 -0
  777. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bold.otf +0 -0
  778. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bolditalic.otf +0 -0
  779. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-italic.otf +0 -0
  780. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-regular.otf +0 -0
  781. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bold.otf +0 -0
  782. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bolditalic.otf +0 -0
  783. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-italic.otf +0 -0
  784. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-regular.otf +0 -0
  785. data/share/lilypond/2.24.1/fonts/source/common-modules-and-initialization.mf +26 -0
  786. data/share/lilypond/2.24.1/fonts/source/debugging-settings.mf +14 -0
  787. data/share/lilypond/2.24.1/fonts/source/declare-autometric-parameters.mf +9 -0
  788. data/share/lilypond/2.24.1/fonts/source/feta-accidentals.mf +58 -0
  789. data/share/lilypond/2.24.1/fonts/source/feta-accordion.mf +575 -0
  790. data/share/lilypond/2.24.1/fonts/source/feta-alphabet-generic.mf +16 -0
  791. data/share/lilypond/2.24.1/fonts/source/feta-alphabet11.mf +6 -0
  792. data/share/lilypond/2.24.1/fonts/source/feta-alphabet13.mf +6 -0
  793. data/share/lilypond/2.24.1/fonts/source/feta-alphabet14.mf +6 -0
  794. data/share/lilypond/2.24.1/fonts/source/feta-alphabet16.mf +6 -0
  795. data/share/lilypond/2.24.1/fonts/source/feta-alphabet18.mf +6 -0
  796. data/share/lilypond/2.24.1/fonts/source/feta-alphabet20.mf +6 -0
  797. data/share/lilypond/2.24.1/fonts/source/feta-alphabet23.mf +6 -0
  798. data/share/lilypond/2.24.1/fonts/source/feta-alphabet26.mf +6 -0
  799. data/share/lilypond/2.24.1/fonts/source/feta-arrow.mf +114 -0
  800. data/share/lilypond/2.24.1/fonts/source/feta-arrowheads.mf +171 -0
  801. data/share/lilypond/2.24.1/fonts/source/feta-autometric.mf +303 -0
  802. data/share/lilypond/2.24.1/fonts/source/feta-braces-a.mf +6 -0
  803. data/share/lilypond/2.24.1/fonts/source/feta-braces-b.mf +6 -0
  804. data/share/lilypond/2.24.1/fonts/source/feta-braces-c.mf +6 -0
  805. data/share/lilypond/2.24.1/fonts/source/feta-braces-d.mf +6 -0
  806. data/share/lilypond/2.24.1/fonts/source/feta-braces-e.mf +6 -0
  807. data/share/lilypond/2.24.1/fonts/source/feta-braces-f.mf +6 -0
  808. data/share/lilypond/2.24.1/fonts/source/feta-braces-g.mf +6 -0
  809. data/share/lilypond/2.24.1/fonts/source/feta-braces-generic.mf +47 -0
  810. data/share/lilypond/2.24.1/fonts/source/feta-braces-h.mf +6 -0
  811. data/share/lilypond/2.24.1/fonts/source/feta-braces-i.mf +6 -0
  812. data/share/lilypond/2.24.1/fonts/source/feta-braces.mf +125 -0
  813. data/share/lilypond/2.24.1/fonts/source/feta-brackettips.mf +100 -0
  814. data/share/lilypond/2.24.1/fonts/source/feta-clefs.mf +963 -0
  815. data/share/lilypond/2.24.1/fonts/source/feta-dots.mf +37 -0
  816. data/share/lilypond/2.24.1/fonts/source/feta-dynamics.mf +891 -0
  817. data/share/lilypond/2.24.1/fonts/source/feta-flags-generic.mf +17 -0
  818. data/share/lilypond/2.24.1/fonts/source/feta-flags.mf +926 -0
  819. data/share/lilypond/2.24.1/fonts/source/feta-flags11.mf +6 -0
  820. data/share/lilypond/2.24.1/fonts/source/feta-flags13.mf +6 -0
  821. data/share/lilypond/2.24.1/fonts/source/feta-flags14.mf +6 -0
  822. data/share/lilypond/2.24.1/fonts/source/feta-flags16.mf +6 -0
  823. data/share/lilypond/2.24.1/fonts/source/feta-flags18.mf +6 -0
  824. data/share/lilypond/2.24.1/fonts/source/feta-flags20.mf +6 -0
  825. data/share/lilypond/2.24.1/fonts/source/feta-flags23.mf +6 -0
  826. data/share/lilypond/2.24.1/fonts/source/feta-flags26.mf +6 -0
  827. data/share/lilypond/2.24.1/fonts/source/feta-flats.mf +668 -0
  828. data/share/lilypond/2.24.1/fonts/source/feta-macros.mf +506 -0
  829. data/share/lilypond/2.24.1/fonts/source/feta-naturals.mf +223 -0
  830. data/share/lilypond/2.24.1/fonts/source/feta-noteheads-generic.mf +17 -0
  831. data/share/lilypond/2.24.1/fonts/source/feta-noteheads.mf +2642 -0
  832. data/share/lilypond/2.24.1/fonts/source/feta-noteheads11.mf +6 -0
  833. data/share/lilypond/2.24.1/fonts/source/feta-noteheads13.mf +6 -0
  834. data/share/lilypond/2.24.1/fonts/source/feta-noteheads14.mf +6 -0
  835. data/share/lilypond/2.24.1/fonts/source/feta-noteheads16.mf +6 -0
  836. data/share/lilypond/2.24.1/fonts/source/feta-noteheads18.mf +6 -0
  837. data/share/lilypond/2.24.1/fonts/source/feta-noteheads20.mf +6 -0
  838. data/share/lilypond/2.24.1/fonts/source/feta-noteheads23.mf +6 -0
  839. data/share/lilypond/2.24.1/fonts/source/feta-noteheads26.mf +6 -0
  840. data/share/lilypond/2.24.1/fonts/source/feta-numbers.mf +1677 -0
  841. data/share/lilypond/2.24.1/fonts/source/feta-other-generic.mf +27 -0
  842. data/share/lilypond/2.24.1/fonts/source/feta-params.mf +323 -0
  843. data/share/lilypond/2.24.1/fonts/source/feta-parenthesis.mf +63 -0
  844. data/share/lilypond/2.24.1/fonts/source/feta-pedals.mf +355 -0
  845. data/share/lilypond/2.24.1/fonts/source/feta-rests.mf +890 -0
  846. data/share/lilypond/2.24.1/fonts/source/feta-scripts.mf +2206 -0
  847. data/share/lilypond/2.24.1/fonts/source/feta-sharps.mf +524 -0
  848. data/share/lilypond/2.24.1/fonts/source/feta-sori-koron.mf +325 -0
  849. data/share/lilypond/2.24.1/fonts/source/feta-ties.mf +72 -0
  850. data/share/lilypond/2.24.1/fonts/source/feta-timesignatures.mf +119 -0
  851. data/share/lilypond/2.24.1/fonts/source/feta-trills.mf +321 -0
  852. data/share/lilypond/2.24.1/fonts/source/feta11.mf +6 -0
  853. data/share/lilypond/2.24.1/fonts/source/feta13.mf +6 -0
  854. data/share/lilypond/2.24.1/fonts/source/feta14.mf +6 -0
  855. data/share/lilypond/2.24.1/fonts/source/feta16.mf +6 -0
  856. data/share/lilypond/2.24.1/fonts/source/feta18.mf +6 -0
  857. data/share/lilypond/2.24.1/fonts/source/feta20.mf +7 -0
  858. data/share/lilypond/2.24.1/fonts/source/feta23.mf +6 -0
  859. data/share/lilypond/2.24.1/fonts/source/feta26.mf +6 -0
  860. data/share/lilypond/2.24.1/fonts/source/parmesan-accidentals.mf +483 -0
  861. data/share/lilypond/2.24.1/fonts/source/parmesan-clefs.mf +1636 -0
  862. data/share/lilypond/2.24.1/fonts/source/parmesan-custodes.mf +503 -0
  863. data/share/lilypond/2.24.1/fonts/source/parmesan-dots.mf +62 -0
  864. data/share/lilypond/2.24.1/fonts/source/parmesan-flags.mf +319 -0
  865. data/share/lilypond/2.24.1/fonts/source/parmesan-macros.mf +225 -0
  866. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads-generic.mf +16 -0
  867. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads.mf +2191 -0
  868. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads11.mf +6 -0
  869. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads13.mf +6 -0
  870. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads14.mf +6 -0
  871. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads16.mf +6 -0
  872. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads18.mf +6 -0
  873. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads20.mf +6 -0
  874. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads23.mf +6 -0
  875. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads26.mf +6 -0
  876. data/share/lilypond/2.24.1/fonts/source/parmesan-other-generic.mf +24 -0
  877. data/share/lilypond/2.24.1/fonts/source/parmesan-rests.mf +428 -0
  878. data/share/lilypond/2.24.1/fonts/source/parmesan-scripts.mf +284 -0
  879. data/share/lilypond/2.24.1/fonts/source/parmesan-timesignatures.mf +402 -0
  880. data/share/lilypond/2.24.1/fonts/source/parmesan11.mf +6 -0
  881. data/share/lilypond/2.24.1/fonts/source/parmesan13.mf +6 -0
  882. data/share/lilypond/2.24.1/fonts/source/parmesan14.mf +6 -0
  883. data/share/lilypond/2.24.1/fonts/source/parmesan16.mf +6 -0
  884. data/share/lilypond/2.24.1/fonts/source/parmesan18.mf +6 -0
  885. data/share/lilypond/2.24.1/fonts/source/parmesan20.mf +6 -0
  886. data/share/lilypond/2.24.1/fonts/source/parmesan23.mf +6 -0
  887. data/share/lilypond/2.24.1/fonts/source/parmesan26.mf +6 -0
  888. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.svg +2525 -0
  889. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.woff +0 -0
  890. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.svg +2530 -0
  891. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.woff +0 -0
  892. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.svg +2526 -0
  893. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.woff +0 -0
  894. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.svg +2523 -0
  895. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.woff +0 -0
  896. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.svg +2519 -0
  897. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.woff +0 -0
  898. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.svg +2512 -0
  899. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.woff +0 -0
  900. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.svg +2506 -0
  901. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.woff +0 -0
  902. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.svg +2510 -0
  903. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.woff +0 -0
  904. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.svg +1757 -0
  905. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.woff +0 -0
  906. data/share/lilypond/2.24.1/ly/Welcome_to_LilyPond.ly +45 -0
  907. data/share/lilypond/2.24.1/ly/arabic.ly +185 -0
  908. data/share/lilypond/2.24.1/ly/articulate.ly +1013 -0
  909. data/share/lilypond/2.24.1/ly/bagpipe.ly +368 -0
  910. data/share/lilypond/2.24.1/ly/base-tkit.ly +135 -0
  911. data/share/lilypond/2.24.1/ly/catalan.ly +23 -0
  912. data/share/lilypond/2.24.1/ly/chord-modifiers-init.ly +63 -0
  913. data/share/lilypond/2.24.1/ly/chord-repetition-init.ly +60 -0
  914. data/share/lilypond/2.24.1/ly/context-mods-init.ly +119 -0
  915. data/share/lilypond/2.24.1/ly/declarations-init.ly +167 -0
  916. data/share/lilypond/2.24.1/ly/deutsch.ly +23 -0
  917. data/share/lilypond/2.24.1/ly/drumpitch-init.ly +366 -0
  918. data/share/lilypond/2.24.1/ly/dynamic-scripts-init.ly +54 -0
  919. data/share/lilypond/2.24.1/ly/english.ly +23 -0
  920. data/share/lilypond/2.24.1/ly/engraver-init.ly +1619 -0
  921. data/share/lilypond/2.24.1/ly/espanol.ly +23 -0
  922. data/share/lilypond/2.24.1/ly/event-listener.ly +241 -0
  923. data/share/lilypond/2.24.1/ly/festival.ly +38 -0
  924. data/share/lilypond/2.24.1/ly/generate-documentation.ly +7 -0
  925. data/share/lilypond/2.24.1/ly/grace-init.ly +56 -0
  926. data/share/lilypond/2.24.1/ly/graphviz-init.ly +174 -0
  927. data/share/lilypond/2.24.1/ly/gregorian.ly +268 -0
  928. data/share/lilypond/2.24.1/ly/guile-debugger.ly +55 -0
  929. data/share/lilypond/2.24.1/ly/hel-arabic.ly +307 -0
  930. data/share/lilypond/2.24.1/ly/init.ly +96 -0
  931. data/share/lilypond/2.24.1/ly/italiano.ly +23 -0
  932. data/share/lilypond/2.24.1/ly/lilypond-book-preamble.ly +47 -0
  933. data/share/lilypond/2.24.1/ly/lyrics-tkit.ly +68 -0
  934. data/share/lilypond/2.24.1/ly/makam.ly +166 -0
  935. data/share/lilypond/2.24.1/ly/midi-init.ly +59 -0
  936. data/share/lilypond/2.24.1/ly/music-functions-init.ly +2254 -0
  937. data/share/lilypond/2.24.1/ly/nederlands.ly +23 -0
  938. data/share/lilypond/2.24.1/ly/norsk.ly +23 -0
  939. data/share/lilypond/2.24.1/ly/paper-defaults-init.ly +188 -0
  940. data/share/lilypond/2.24.1/ly/performer-init.ly +398 -0
  941. data/share/lilypond/2.24.1/ly/persian.ly +335 -0
  942. data/share/lilypond/2.24.1/ly/piano-tkit.ly +61 -0
  943. data/share/lilypond/2.24.1/ly/portugues.ly +23 -0
  944. data/share/lilypond/2.24.1/ly/predefined-fretboards-init.ly +78 -0
  945. data/share/lilypond/2.24.1/ly/predefined-guitar-fretboards.ly +506 -0
  946. data/share/lilypond/2.24.1/ly/predefined-guitar-ninth-fretboards.ly +75 -0
  947. data/share/lilypond/2.24.1/ly/predefined-mandolin-fretboards.ly +876 -0
  948. data/share/lilypond/2.24.1/ly/predefined-ukulele-fretboards.ly +1285 -0
  949. data/share/lilypond/2.24.1/ly/property-init.ly +858 -0
  950. data/share/lilypond/2.24.1/ly/satb.ly +214 -0
  951. data/share/lilypond/2.24.1/ly/scale-definitions-init.ly +117 -0
  952. data/share/lilypond/2.24.1/ly/scheme-sandbox.ly +39 -0
  953. data/share/lilypond/2.24.1/ly/script-init.ly +94 -0
  954. data/share/lilypond/2.24.1/ly/spanners-init.ly +146 -0
  955. data/share/lilypond/2.24.1/ly/ssaattbb.ly +335 -0
  956. data/share/lilypond/2.24.1/ly/staff-tkit.ly +182 -0
  957. data/share/lilypond/2.24.1/ly/string-tunings-init.ly +94 -0
  958. data/share/lilypond/2.24.1/ly/suomi.ly +23 -0
  959. data/share/lilypond/2.24.1/ly/svenska.ly +23 -0
  960. data/share/lilypond/2.24.1/ly/swing.ly +362 -0
  961. data/share/lilypond/2.24.1/ly/text-replacements.ly +150 -0
  962. data/share/lilypond/2.24.1/ly/titling-init.ly +150 -0
  963. data/share/lilypond/2.24.1/ly/toc-init.ly +182 -0
  964. data/share/lilypond/2.24.1/ly/turkish-makam.ly +609 -0
  965. data/share/lilypond/2.24.1/ly/vlaams.ly +23 -0
  966. data/share/lilypond/2.24.1/ly/vocal-tkit.ly +103 -0
  967. data/share/lilypond/2.24.1/ly/voice-tkit.ly +34 -0
  968. data/share/lilypond/2.24.1/ps/encodingdefs.ps +2611 -0
  969. data/share/lilypond/2.24.1/ps/lilyponddefs.ps +49 -0
  970. data/share/lilypond/2.24.1/ps/music-drawing-routines.ps +329 -0
  971. data/share/lilypond/2.24.1/python/__pycache__/book_base.cpython-310.pyc +0 -0
  972. data/share/lilypond/2.24.1/python/__pycache__/book_docbook.cpython-310.pyc +0 -0
  973. data/share/lilypond/2.24.1/python/__pycache__/book_html.cpython-310.pyc +0 -0
  974. data/share/lilypond/2.24.1/python/__pycache__/book_latex.cpython-310.pyc +0 -0
  975. data/share/lilypond/2.24.1/python/__pycache__/book_snippets.cpython-310.pyc +0 -0
  976. data/share/lilypond/2.24.1/python/__pycache__/book_texinfo.cpython-310.pyc +0 -0
  977. data/share/lilypond/2.24.1/python/__pycache__/convertrules.cpython-310.pyc +0 -0
  978. data/share/lilypond/2.24.1/python/__pycache__/langdefs.cpython-310.pyc +0 -0
  979. data/share/lilypond/2.24.1/python/__pycache__/lilylib.cpython-310.pyc +0 -0
  980. data/share/lilypond/2.24.1/python/__pycache__/midi.cpython-310.pyc +0 -0
  981. data/share/lilypond/2.24.1/python/__pycache__/musicexp.cpython-310.pyc +0 -0
  982. data/share/lilypond/2.24.1/python/__pycache__/musicxml.cpython-310.pyc +0 -0
  983. data/share/lilypond/2.24.1/python/__pycache__/musicxml2ly_conversion.cpython-310.pyc +0 -0
  984. data/share/lilypond/2.24.1/python/__pycache__/utilities.cpython-310.pyc +0 -0
  985. data/share/lilypond/2.24.1/python/book_base.py +331 -0
  986. data/share/lilypond/2.24.1/python/book_docbook.py +154 -0
  987. data/share/lilypond/2.24.1/python/book_html.py +178 -0
  988. data/share/lilypond/2.24.1/python/book_latex.py +373 -0
  989. data/share/lilypond/2.24.1/python/book_snippets.py +1052 -0
  990. data/share/lilypond/2.24.1/python/book_texinfo.py +437 -0
  991. data/share/lilypond/2.24.1/python/convertrules.py +4764 -0
  992. data/share/lilypond/2.24.1/python/langdefs.py +131 -0
  993. data/share/lilypond/2.24.1/python/lilylib.py +141 -0
  994. data/share/lilypond/2.24.1/python/midi.py +212 -0
  995. data/share/lilypond/2.24.1/python/musicexp.py +2781 -0
  996. data/share/lilypond/2.24.1/python/musicxml.py +1905 -0
  997. data/share/lilypond/2.24.1/python/musicxml2ly_conversion.py +80 -0
  998. data/share/lilypond/2.24.1/python/utilities.py +280 -0
  999. data/share/lilypond/2.24.1/scm/lily/accreg.scm +579 -0
  1000. data/share/lilypond/2.24.1/scm/lily/auto-beam.scm +163 -0
  1001. data/share/lilypond/2.24.1/scm/lily/autochange.scm +100 -0
  1002. data/share/lilypond/2.24.1/scm/lily/backend-library.scm +593 -0
  1003. data/share/lilypond/2.24.1/scm/lily/bar-line.scm +1281 -0
  1004. data/share/lilypond/2.24.1/scm/lily/breath.scm +74 -0
  1005. data/share/lilypond/2.24.1/scm/lily/c++.scm +174 -0
  1006. data/share/lilypond/2.24.1/scm/lily/chord-entry.scm +278 -0
  1007. data/share/lilypond/2.24.1/scm/lily/chord-ignatzek-names.scm +304 -0
  1008. data/share/lilypond/2.24.1/scm/lily/chord-name.scm +217 -0
  1009. data/share/lilypond/2.24.1/scm/lily/clip-region.scm +87 -0
  1010. data/share/lilypond/2.24.1/scm/lily/color.scm +757 -0
  1011. data/share/lilypond/2.24.1/scm/lily/curried-definitions.scm +68 -0
  1012. data/share/lilypond/2.24.1/scm/lily/define-context-properties.scm +939 -0
  1013. data/share/lilypond/2.24.1/scm/lily/define-event-classes.scm +142 -0
  1014. data/share/lilypond/2.24.1/scm/lily/define-grob-interfaces.scm +640 -0
  1015. data/share/lilypond/2.24.1/scm/lily/define-grob-properties.scm +1647 -0
  1016. data/share/lilypond/2.24.1/scm/lily/define-grobs.scm +4027 -0
  1017. data/share/lilypond/2.24.1/scm/lily/define-markup-commands.scm +5737 -0
  1018. data/share/lilypond/2.24.1/scm/lily/define-music-callbacks.scm +257 -0
  1019. data/share/lilypond/2.24.1/scm/lily/define-music-display-methods.scm +1350 -0
  1020. data/share/lilypond/2.24.1/scm/lily/define-music-properties.scm +242 -0
  1021. data/share/lilypond/2.24.1/scm/lily/define-music-types.scm +983 -0
  1022. data/share/lilypond/2.24.1/scm/lily/define-note-names.scm +1421 -0
  1023. data/share/lilypond/2.24.1/scm/lily/define-stencil-commands.scm +71 -0
  1024. data/share/lilypond/2.24.1/scm/lily/define-woodwind-diagrams.scm +1215 -0
  1025. data/share/lilypond/2.24.1/scm/lily/display-lily.scm +315 -0
  1026. data/share/lilypond/2.24.1/scm/lily/display-woodwind-diagrams.scm +1985 -0
  1027. data/share/lilypond/2.24.1/scm/lily/document-backend.scm +307 -0
  1028. data/share/lilypond/2.24.1/scm/lily/document-context-mods.scm +98 -0
  1029. data/share/lilypond/2.24.1/scm/lily/document-functions.scm +169 -0
  1030. data/share/lilypond/2.24.1/scm/lily/document-identifiers.scm +76 -0
  1031. data/share/lilypond/2.24.1/scm/lily/document-markup.scm +158 -0
  1032. data/share/lilypond/2.24.1/scm/lily/document-music.scm +146 -0
  1033. data/share/lilypond/2.24.1/scm/lily/document-outside-staff-priorities.scm +40 -0
  1034. data/share/lilypond/2.24.1/scm/lily/document-paper-sizes.scm +71 -0
  1035. data/share/lilypond/2.24.1/scm/lily/document-translation.scm +318 -0
  1036. data/share/lilypond/2.24.1/scm/lily/document-type-predicates.scm +85 -0
  1037. data/share/lilypond/2.24.1/scm/lily/documentation-generate.scm +259 -0
  1038. data/share/lilypond/2.24.1/scm/lily/documentation-lib.scm +207 -0
  1039. data/share/lilypond/2.24.1/scm/lily/file-cache.scm +28 -0
  1040. data/share/lilypond/2.24.1/scm/lily/flag-styles.scm +249 -0
  1041. data/share/lilypond/2.24.1/scm/lily/font-encodings.scm +1242 -0
  1042. data/share/lilypond/2.24.1/scm/lily/font.scm +303 -0
  1043. data/share/lilypond/2.24.1/scm/lily/framework-cairo.scm +26 -0
  1044. data/share/lilypond/2.24.1/scm/lily/framework-ps.scm +896 -0
  1045. data/share/lilypond/2.24.1/scm/lily/framework-svg.scm +172 -0
  1046. data/share/lilypond/2.24.1/scm/lily/fret-diagrams.scm +1261 -0
  1047. data/share/lilypond/2.24.1/scm/lily/graphviz.scm +78 -0
  1048. data/share/lilypond/2.24.1/scm/lily/guile-debugger.scm +90 -0
  1049. data/share/lilypond/2.24.1/scm/lily/harp-pedals.scm +172 -0
  1050. data/share/lilypond/2.24.1/scm/lily/hyphenate-internal-words.scm +51 -0
  1051. data/share/lilypond/2.24.1/scm/lily/layout-beam.scm +73 -0
  1052. data/share/lilypond/2.24.1/scm/lily/layout-slur.scm +45 -0
  1053. data/share/lilypond/2.24.1/scm/lily/lily-library.scm +1446 -0
  1054. data/share/lilypond/2.24.1/scm/lily/lily-sort.scm +116 -0
  1055. data/share/lilypond/2.24.1/scm/lily/lily.scm +929 -0
  1056. data/share/lilypond/2.24.1/scm/lily/ly-syntax-constructors.scm +374 -0
  1057. data/share/lilypond/2.24.1/scm/lily/markup-macros.scm +493 -0
  1058. data/share/lilypond/2.24.1/scm/lily/markup.scm +126 -0
  1059. data/share/lilypond/2.24.1/scm/lily/midi.scm +258 -0
  1060. data/share/lilypond/2.24.1/scm/lily/modal-transforms.scm +337 -0
  1061. data/share/lilypond/2.24.1/scm/lily/music-functions.scm +2878 -0
  1062. data/share/lilypond/2.24.1/scm/lily/output-lib.scm +3377 -0
  1063. data/share/lilypond/2.24.1/scm/lily/output-ps.scm +335 -0
  1064. data/share/lilypond/2.24.1/scm/lily/output-svg.scm +684 -0
  1065. data/share/lilypond/2.24.1/scm/lily/page.scm +321 -0
  1066. data/share/lilypond/2.24.1/scm/lily/paper-system.scm +271 -0
  1067. data/share/lilypond/2.24.1/scm/lily/paper.scm +376 -0
  1068. data/share/lilypond/2.24.1/scm/lily/parser-clef.scm +205 -0
  1069. data/share/lilypond/2.24.1/scm/lily/parser-ly-from-scheme.scm +170 -0
  1070. data/share/lilypond/2.24.1/scm/lily/part-combiner.scm +998 -0
  1071. data/share/lilypond/2.24.1/scm/lily/predefined-fretboards.scm +54 -0
  1072. data/share/lilypond/2.24.1/scm/lily/ps-to-png.scm +182 -0
  1073. data/share/lilypond/2.24.1/scm/lily/scheme-engravers.scm +1813 -0
  1074. data/share/lilypond/2.24.1/scm/lily/scheme-performers.scm +126 -0
  1075. data/share/lilypond/2.24.1/scm/lily/script.scm +416 -0
  1076. data/share/lilypond/2.24.1/scm/lily/skyline.scm +25 -0
  1077. data/share/lilypond/2.24.1/scm/lily/song-util.scm +191 -0
  1078. data/share/lilypond/2.24.1/scm/lily/song.scm +853 -0
  1079. data/share/lilypond/2.24.1/scm/lily/stencil.scm +998 -0
  1080. data/share/lilypond/2.24.1/scm/lily/tablature.scm +392 -0
  1081. data/share/lilypond/2.24.1/scm/lily/time-signature-settings.scm +473 -0
  1082. data/share/lilypond/2.24.1/scm/lily/time-signature.scm +35 -0
  1083. data/share/lilypond/2.24.1/scm/lily/titling.scm +99 -0
  1084. data/share/lilypond/2.24.1/scm/lily/to-xml.scm +254 -0
  1085. data/share/lilypond/2.24.1/scm/lily/translation-functions.scm +1169 -0
  1086. data/share/lilypond/2.24.1/vim/compiler/lilypond.vim +36 -0
  1087. data/share/lilypond/2.24.1/vim/ftdetect/lilypond.vim +4 -0
  1088. data/share/lilypond/2.24.1/vim/ftplugin/lilypond.vim +91 -0
  1089. data/share/lilypond/2.24.1/vim/indent/lilypond.vim +79 -0
  1090. data/share/lilypond/2.24.1/vim/syntax/lilypond-words +1408 -0
  1091. data/share/lilypond/2.24.1/vim/syntax/lilypond-words.vim +3 -0
  1092. data/share/lilypond/2.24.1/vim/syntax/lilypond.vim +104 -0
  1093. data/share/locale/ca/LC_MESSAGES/lilypond.mo +0 -0
  1094. data/share/locale/cs/LC_MESSAGES/lilypond.mo +0 -0
  1095. data/share/locale/da/LC_MESSAGES/lilypond.mo +0 -0
  1096. data/share/locale/de/LC_MESSAGES/lilypond.mo +0 -0
  1097. data/share/locale/el/LC_MESSAGES/lilypond.mo +0 -0
  1098. data/share/locale/eo/LC_MESSAGES/lilypond.mo +0 -0
  1099. data/share/locale/es/LC_MESSAGES/lilypond.mo +0 -0
  1100. data/share/locale/fi/LC_MESSAGES/lilypond.mo +0 -0
  1101. data/share/locale/fr/LC_MESSAGES/lilypond.mo +0 -0
  1102. data/share/locale/it/LC_MESSAGES/lilypond.mo +0 -0
  1103. data/share/locale/ja/LC_MESSAGES/lilypond.mo +0 -0
  1104. data/share/locale/nl/LC_MESSAGES/lilypond.mo +0 -0
  1105. data/share/locale/ru/LC_MESSAGES/lilypond.mo +0 -0
  1106. data/share/locale/sv/LC_MESSAGES/lilypond.mo +0 -0
  1107. data/share/locale/tr/LC_MESSAGES/lilypond.mo +0 -0
  1108. data/share/locale/uk/LC_MESSAGES/lilypond.mo +0 -0
  1109. data/share/locale/vi/LC_MESSAGES/lilypond.mo +0 -0
  1110. data/share/locale/zh_CN/LC_MESSAGES/lilypond.mo +0 -0
  1111. data/share/locale/zh_TW/LC_MESSAGES/lilypond.mo +0 -0
  1112. metadata +1135 -4
@@ -0,0 +1,3542 @@
1
+ (eval-when (compile) (set-current-module (resolve-module (quote (guile)))))
2
+ (if #f #f)
3
+
4
+ (let ((syntax? (module-ref (current-module) 'syntax?))
5
+ (make-syntax (module-ref (current-module) 'make-syntax))
6
+ (syntax-expression (module-ref (current-module) 'syntax-expression))
7
+ (syntax-wrap (module-ref (current-module) 'syntax-wrap))
8
+ (syntax-module (module-ref (current-module) 'syntax-module)))
9
+ (letrec*
10
+ ((make-void
11
+ (lambda (src)
12
+ (make-struct/no-tail (vector-ref %expanded-vtables 0) src)))
13
+ (make-const
14
+ (lambda (src exp)
15
+ (make-struct/no-tail (vector-ref %expanded-vtables 1) src exp)))
16
+ (make-primitive-ref
17
+ (lambda (src name)
18
+ (make-struct/no-tail (vector-ref %expanded-vtables 2) src name)))
19
+ (make-lexical-ref
20
+ (lambda (src name gensym)
21
+ (make-struct/no-tail
22
+ (vector-ref %expanded-vtables 3)
23
+ src
24
+ name
25
+ gensym)))
26
+ (make-lexical-set
27
+ (lambda (src name gensym exp)
28
+ (make-struct/no-tail
29
+ (vector-ref %expanded-vtables 4)
30
+ src
31
+ name
32
+ gensym
33
+ exp)))
34
+ (make-module-ref
35
+ (lambda (src mod name public?)
36
+ (make-struct/no-tail
37
+ (vector-ref %expanded-vtables 5)
38
+ src
39
+ mod
40
+ name
41
+ public?)))
42
+ (make-module-set
43
+ (lambda (src mod name public? exp)
44
+ (make-struct/no-tail
45
+ (vector-ref %expanded-vtables 6)
46
+ src
47
+ mod
48
+ name
49
+ public?
50
+ exp)))
51
+ (make-toplevel-ref
52
+ (lambda (src name)
53
+ (make-struct/no-tail (vector-ref %expanded-vtables 7) src name)))
54
+ (make-toplevel-set
55
+ (lambda (src name exp)
56
+ (make-struct/no-tail (vector-ref %expanded-vtables 8) src name exp)))
57
+ (make-toplevel-define
58
+ (lambda (src name exp)
59
+ (make-struct/no-tail (vector-ref %expanded-vtables 9) src name exp)))
60
+ (make-conditional
61
+ (lambda (src test consequent alternate)
62
+ (make-struct/no-tail
63
+ (vector-ref %expanded-vtables 10)
64
+ src
65
+ test
66
+ consequent
67
+ alternate)))
68
+ (make-call
69
+ (lambda (src proc args)
70
+ (make-struct/no-tail (vector-ref %expanded-vtables 11) src proc args)))
71
+ (make-primcall
72
+ (lambda (src name args)
73
+ (make-struct/no-tail (vector-ref %expanded-vtables 12) src name args)))
74
+ (make-seq
75
+ (lambda (src head tail)
76
+ (make-struct/no-tail (vector-ref %expanded-vtables 13) src head tail)))
77
+ (make-lambda
78
+ (lambda (src meta body)
79
+ (make-struct/no-tail (vector-ref %expanded-vtables 14) src meta body)))
80
+ (make-lambda-case
81
+ (lambda (src req opt rest kw inits gensyms body alternate)
82
+ (make-struct/no-tail
83
+ (vector-ref %expanded-vtables 15)
84
+ src
85
+ req
86
+ opt
87
+ rest
88
+ kw
89
+ inits
90
+ gensyms
91
+ body
92
+ alternate)))
93
+ (make-let
94
+ (lambda (src names gensyms vals body)
95
+ (make-struct/no-tail
96
+ (vector-ref %expanded-vtables 16)
97
+ src
98
+ names
99
+ gensyms
100
+ vals
101
+ body)))
102
+ (make-letrec
103
+ (lambda (src in-order? names gensyms vals body)
104
+ (make-struct/no-tail
105
+ (vector-ref %expanded-vtables 17)
106
+ src
107
+ in-order?
108
+ names
109
+ gensyms
110
+ vals
111
+ body)))
112
+ (lambda?
113
+ (lambda (x)
114
+ (and (struct? x)
115
+ (eq? (struct-vtable x) (vector-ref %expanded-vtables 14)))))
116
+ (lambda-meta (lambda (x) (struct-ref x 1)))
117
+ (set-lambda-meta! (lambda (x v) (struct-set! x 1 v)))
118
+ (top-level-eval-hook (lambda (x mod) (primitive-eval x)))
119
+ (local-eval-hook (lambda (x mod) (primitive-eval x)))
120
+ (session-id
121
+ (let ((v (module-variable (current-module) 'syntax-session-id)))
122
+ (lambda () ((variable-ref v)))))
123
+ (decorate-source
124
+ (lambda (e s)
125
+ (if (and s (supports-source-properties? e))
126
+ (set-source-properties! e s))
127
+ e))
128
+ (maybe-name-value!
129
+ (lambda (name val)
130
+ (if (lambda? val)
131
+ (let ((meta (lambda-meta val)))
132
+ (if (not (assq 'name meta))
133
+ (set-lambda-meta! val (acons 'name name meta)))))))
134
+ (build-void (lambda (source) (make-void source)))
135
+ (build-call
136
+ (lambda (source fun-exp arg-exps)
137
+ (make-call source fun-exp arg-exps)))
138
+ (build-conditional
139
+ (lambda (source test-exp then-exp else-exp)
140
+ (make-conditional source test-exp then-exp else-exp)))
141
+ (build-lexical-reference
142
+ (lambda (type source name var) (make-lexical-ref source name var)))
143
+ (build-lexical-assignment
144
+ (lambda (source name var exp)
145
+ (maybe-name-value! name exp)
146
+ (make-lexical-set source name var exp)))
147
+ (analyze-variable
148
+ (lambda (mod var modref-cont bare-cont)
149
+ (if (not mod)
150
+ (bare-cont var)
151
+ (let ((kind (car mod)) (mod (cdr mod)))
152
+ (let ((key kind))
153
+ (cond ((memv key '(public)) (modref-cont mod var #t))
154
+ ((memv key '(private))
155
+ (if (not (equal? mod (module-name (current-module))))
156
+ (modref-cont mod var #f)
157
+ (bare-cont var)))
158
+ ((memv key '(bare)) (bare-cont var))
159
+ ((memv key '(hygiene))
160
+ (if (and (not (equal? mod (module-name (current-module))))
161
+ (module-variable (resolve-module mod) var))
162
+ (modref-cont mod var #f)
163
+ (bare-cont var)))
164
+ ((memv key '(primitive))
165
+ (syntax-violation #f "primitive not in operator position" var))
166
+ (else (syntax-violation #f "bad module kind" var mod))))))))
167
+ (build-global-reference
168
+ (lambda (source var mod)
169
+ (analyze-variable
170
+ mod
171
+ var
172
+ (lambda (mod var public?) (make-module-ref source mod var public?))
173
+ (lambda (var) (make-toplevel-ref source var)))))
174
+ (build-global-assignment
175
+ (lambda (source var exp mod)
176
+ (maybe-name-value! var exp)
177
+ (analyze-variable
178
+ mod
179
+ var
180
+ (lambda (mod var public?)
181
+ (make-module-set source mod var public? exp))
182
+ (lambda (var) (make-toplevel-set source var exp)))))
183
+ (build-global-definition
184
+ (lambda (source var exp)
185
+ (maybe-name-value! var exp)
186
+ (make-toplevel-define source var exp)))
187
+ (build-simple-lambda
188
+ (lambda (src req rest vars meta exp)
189
+ (make-lambda
190
+ src
191
+ meta
192
+ (make-lambda-case src req #f rest #f '() vars exp #f))))
193
+ (build-case-lambda
194
+ (lambda (src meta body) (make-lambda src meta body)))
195
+ (build-lambda-case
196
+ (lambda (src req opt rest kw inits vars body else-case)
197
+ (make-lambda-case src req opt rest kw inits vars body else-case)))
198
+ (build-primcall
199
+ (lambda (src name args) (make-primcall src name args)))
200
+ (build-primref (lambda (src name) (make-primitive-ref src name)))
201
+ (build-data (lambda (src exp) (make-const src exp)))
202
+ (build-sequence
203
+ (lambda (src exps)
204
+ (if (null? (cdr exps))
205
+ (car exps)
206
+ (make-seq src (car exps) (build-sequence #f (cdr exps))))))
207
+ (build-let
208
+ (lambda (src ids vars val-exps body-exp)
209
+ (for-each maybe-name-value! ids val-exps)
210
+ (if (null? vars) body-exp (make-let src ids vars val-exps body-exp))))
211
+ (build-named-let
212
+ (lambda (src ids vars val-exps body-exp)
213
+ (let ((f (car vars)) (f-name (car ids)) (vars (cdr vars)) (ids (cdr ids)))
214
+ (let ((proc (build-simple-lambda src ids #f vars '() body-exp)))
215
+ (maybe-name-value! f-name proc)
216
+ (for-each maybe-name-value! ids val-exps)
217
+ (make-letrec
218
+ src
219
+ #f
220
+ (list f-name)
221
+ (list f)
222
+ (list proc)
223
+ (build-call src (build-lexical-reference 'fun src f-name f) val-exps))))))
224
+ (build-letrec
225
+ (lambda (src in-order? ids vars val-exps body-exp)
226
+ (if (null? vars)
227
+ body-exp
228
+ (begin
229
+ (for-each maybe-name-value! ids val-exps)
230
+ (make-letrec src in-order? ids vars val-exps body-exp)))))
231
+ (syntax-object?
232
+ (lambda (x)
233
+ (or (syntax? x)
234
+ (and (allow-legacy-syntax-objects?)
235
+ (vector? x)
236
+ (= (vector-length x) 4)
237
+ (eqv? (vector-ref x 0) 'syntax-object)))))
238
+ (make-syntax-object
239
+ (lambda (expression wrap module)
240
+ (make-syntax expression wrap module)))
241
+ (syntax-object-expression
242
+ (lambda (obj)
243
+ (if (syntax? obj) (syntax-expression obj) (vector-ref obj 1))))
244
+ (syntax-object-wrap
245
+ (lambda (obj)
246
+ (if (syntax? obj) (syntax-wrap obj) (vector-ref obj 2))))
247
+ (syntax-object-module
248
+ (lambda (obj)
249
+ (if (syntax? obj) (syntax-module obj) (vector-ref obj 3))))
250
+ (source-annotation
251
+ (lambda (x)
252
+ (let ((props (source-properties
253
+ (if (syntax-object? x) (syntax-object-expression x) x))))
254
+ (and (pair? props) props))))
255
+ (extend-env
256
+ (lambda (labels bindings r)
257
+ (if (null? labels)
258
+ r
259
+ (extend-env
260
+ (cdr labels)
261
+ (cdr bindings)
262
+ (cons (cons (car labels) (car bindings)) r)))))
263
+ (extend-var-env
264
+ (lambda (labels vars r)
265
+ (if (null? labels)
266
+ r
267
+ (extend-var-env
268
+ (cdr labels)
269
+ (cdr vars)
270
+ (cons (cons (car labels) (cons 'lexical (car vars))) r)))))
271
+ (macros-only-env
272
+ (lambda (r)
273
+ (if (null? r)
274
+ '()
275
+ (let ((a (car r)))
276
+ (if (memq (cadr a) '(macro syntax-parameter ellipsis))
277
+ (cons a (macros-only-env (cdr r)))
278
+ (macros-only-env (cdr r)))))))
279
+ (global-extend
280
+ (lambda (type sym val)
281
+ (module-define!
282
+ (current-module)
283
+ sym
284
+ (make-syntax-transformer sym type val))))
285
+ (nonsymbol-id?
286
+ (lambda (x)
287
+ (and (syntax-object? x) (symbol? (syntax-object-expression x)))))
288
+ (id? (lambda (x)
289
+ (if (symbol? x)
290
+ #t
291
+ (and (syntax-object? x) (symbol? (syntax-object-expression x))))))
292
+ (id-sym-name&marks
293
+ (lambda (x w)
294
+ (if (syntax-object? x)
295
+ (values
296
+ (syntax-object-expression x)
297
+ (join-marks (car w) (car (syntax-object-wrap x))))
298
+ (values x (car w)))))
299
+ (gen-label (lambda () (symbol->string (module-gensym "l"))))
300
+ (gen-labels
301
+ (lambda (ls)
302
+ (if (null? ls) '() (cons (gen-label) (gen-labels (cdr ls))))))
303
+ (make-ribcage
304
+ (lambda (symnames marks labels)
305
+ (vector 'ribcage symnames marks labels)))
306
+ (ribcage?
307
+ (lambda (x)
308
+ (and (vector? x)
309
+ (= (vector-length x) 4)
310
+ (eq? (vector-ref x 0) 'ribcage))))
311
+ (ribcage-symnames (lambda (x) (vector-ref x 1)))
312
+ (ribcage-marks (lambda (x) (vector-ref x 2)))
313
+ (ribcage-labels (lambda (x) (vector-ref x 3)))
314
+ (set-ribcage-symnames! (lambda (x update) (vector-set! x 1 update)))
315
+ (set-ribcage-marks! (lambda (x update) (vector-set! x 2 update)))
316
+ (set-ribcage-labels! (lambda (x update) (vector-set! x 3 update)))
317
+ (anti-mark
318
+ (lambda (w) (cons (cons #f (car w)) (cons 'shift (cdr w)))))
319
+ (extend-ribcage!
320
+ (lambda (ribcage id label)
321
+ (set-ribcage-symnames!
322
+ ribcage
323
+ (cons (syntax-object-expression id) (ribcage-symnames ribcage)))
324
+ (set-ribcage-marks!
325
+ ribcage
326
+ (cons (car (syntax-object-wrap id)) (ribcage-marks ribcage)))
327
+ (set-ribcage-labels! ribcage (cons label (ribcage-labels ribcage)))))
328
+ (make-binding-wrap
329
+ (lambda (ids labels w)
330
+ (if (null? ids)
331
+ w
332
+ (cons (car w)
333
+ (cons (let* ((labelvec (list->vector labels)) (n (vector-length labelvec)))
334
+ (let ((symnamevec (make-vector n)) (marksvec (make-vector n)))
335
+ (let f ((ids ids) (i 0))
336
+ (if (not (null? ids))
337
+ (call-with-values
338
+ (lambda () (id-sym-name&marks (car ids) w))
339
+ (lambda (symname marks)
340
+ (vector-set! symnamevec i symname)
341
+ (vector-set! marksvec i marks)
342
+ (f (cdr ids) (+ i 1))))))
343
+ (make-ribcage symnamevec marksvec labelvec)))
344
+ (cdr w))))))
345
+ (smart-append (lambda (m1 m2) (if (null? m2) m1 (append m1 m2))))
346
+ (join-wraps
347
+ (lambda (w1 w2)
348
+ (let ((m1 (car w1)) (s1 (cdr w1)))
349
+ (if (null? m1)
350
+ (if (null? s1) w2 (cons (car w2) (smart-append s1 (cdr w2))))
351
+ (cons (smart-append m1 (car w2)) (smart-append s1 (cdr w2)))))))
352
+ (join-marks (lambda (m1 m2) (smart-append m1 m2)))
353
+ (same-marks?
354
+ (lambda (x y)
355
+ (or (eq? x y)
356
+ (and (not (null? x))
357
+ (not (null? y))
358
+ (eq? (car x) (car y))
359
+ (same-marks? (cdr x) (cdr y))))))
360
+ (id-var-name
361
+ (lambda (id w mod)
362
+ (letrec*
363
+ ((search
364
+ (lambda (sym subst marks mod)
365
+ (if (null? subst)
366
+ (values #f marks)
367
+ (let ((fst (car subst)))
368
+ (if (eq? fst 'shift)
369
+ (search sym (cdr subst) (cdr marks) mod)
370
+ (let ((symnames (ribcage-symnames fst)))
371
+ (if (vector? symnames)
372
+ (search-vector-rib sym subst marks symnames fst mod)
373
+ (search-list-rib sym subst marks symnames fst mod))))))))
374
+ (search-list-rib
375
+ (lambda (sym subst marks symnames ribcage mod)
376
+ (let f ((symnames symnames) (i 0))
377
+ (cond ((null? symnames) (search sym (cdr subst) marks mod))
378
+ ((and (eq? (car symnames) sym)
379
+ (same-marks? marks (list-ref (ribcage-marks ribcage) i)))
380
+ (let ((n (list-ref (ribcage-labels ribcage) i)))
381
+ (if (pair? n)
382
+ (if (equal? mod (car n))
383
+ (values (cdr n) marks)
384
+ (f (cdr symnames) (+ i 1)))
385
+ (values n marks))))
386
+ (else (f (cdr symnames) (+ i 1)))))))
387
+ (search-vector-rib
388
+ (lambda (sym subst marks symnames ribcage mod)
389
+ (let ((n (vector-length symnames)))
390
+ (let f ((i 0))
391
+ (cond ((= i n) (search sym (cdr subst) marks mod))
392
+ ((and (eq? (vector-ref symnames i) sym)
393
+ (same-marks? marks (vector-ref (ribcage-marks ribcage) i)))
394
+ (let ((n (vector-ref (ribcage-labels ribcage) i)))
395
+ (if (pair? n)
396
+ (if (equal? mod (car n)) (values (cdr n) marks) (f (+ i 1)))
397
+ (values n marks))))
398
+ (else (f (+ i 1)))))))))
399
+ (cond ((symbol? id) (or (search id (cdr w) (car w) mod) id))
400
+ ((syntax-object? id)
401
+ (let ((id (syntax-object-expression id))
402
+ (w1 (syntax-object-wrap id))
403
+ (mod (syntax-object-module id)))
404
+ (let ((marks (join-marks (car w) (car w1))))
405
+ (call-with-values
406
+ (lambda () (search id (cdr w) marks mod))
407
+ (lambda (new-id marks) (or new-id (search id (cdr w1) marks mod) id))))))
408
+ (else (syntax-violation 'id-var-name "invalid id" id))))))
409
+ (locally-bound-identifiers
410
+ (lambda (w mod)
411
+ (letrec*
412
+ ((scan (lambda (subst results)
413
+ (if (null? subst)
414
+ results
415
+ (let ((fst (car subst)))
416
+ (if (eq? fst 'shift)
417
+ (scan (cdr subst) results)
418
+ (let ((symnames (ribcage-symnames fst)) (marks (ribcage-marks fst)))
419
+ (if (vector? symnames)
420
+ (scan-vector-rib subst symnames marks results)
421
+ (scan-list-rib subst symnames marks results))))))))
422
+ (scan-list-rib
423
+ (lambda (subst symnames marks results)
424
+ (let f ((symnames symnames) (marks marks) (results results))
425
+ (if (null? symnames)
426
+ (scan (cdr subst) results)
427
+ (f (cdr symnames)
428
+ (cdr marks)
429
+ (cons (wrap (car symnames) (anti-mark (cons (car marks) subst)) mod)
430
+ results))))))
431
+ (scan-vector-rib
432
+ (lambda (subst symnames marks results)
433
+ (let ((n (vector-length symnames)))
434
+ (let f ((i 0) (results results))
435
+ (if (= i n)
436
+ (scan (cdr subst) results)
437
+ (f (+ i 1)
438
+ (cons (wrap (vector-ref symnames i)
439
+ (anti-mark (cons (vector-ref marks i) subst))
440
+ mod)
441
+ results))))))))
442
+ (scan (cdr w) '()))))
443
+ (resolve-identifier
444
+ (lambda (id w r mod resolve-syntax-parameters?)
445
+ (letrec*
446
+ ((resolve-global
447
+ (lambda (var mod)
448
+ (if (and (not mod) (current-module))
449
+ (warn "module system is booted, we should have a module" var))
450
+ (let ((v (and (not (equal? mod '(primitive)))
451
+ (module-variable
452
+ (if mod (resolve-module (cdr mod)) (current-module))
453
+ var))))
454
+ (if (and v (variable-bound? v) (macro? (variable-ref v)))
455
+ (let* ((m (variable-ref v))
456
+ (type (macro-type m))
457
+ (trans (macro-binding m))
458
+ (trans (if (pair? trans) (car trans) trans)))
459
+ (if (eq? type 'syntax-parameter)
460
+ (if resolve-syntax-parameters?
461
+ (let ((lexical (assq-ref r v)))
462
+ (values 'macro (if lexical (cdr lexical) trans) mod))
463
+ (values type v mod))
464
+ (values type trans mod)))
465
+ (values 'global var mod)))))
466
+ (resolve-lexical
467
+ (lambda (label mod)
468
+ (let ((b (assq-ref r label)))
469
+ (if b
470
+ (let ((type (car b)) (value (cdr b)))
471
+ (if (eq? type 'syntax-parameter)
472
+ (if resolve-syntax-parameters?
473
+ (values 'macro value mod)
474
+ (values type label mod))
475
+ (values type value mod)))
476
+ (values 'displaced-lexical #f #f))))))
477
+ (let ((n (id-var-name id w mod)))
478
+ (cond ((syntax-object? n)
479
+ (if (not (eq? n id))
480
+ (resolve-identifier n w r mod resolve-syntax-parameters?)
481
+ (resolve-identifier
482
+ (syntax-object-expression n)
483
+ (syntax-object-wrap n)
484
+ r
485
+ (syntax-object-module n)
486
+ resolve-syntax-parameters?)))
487
+ ((symbol? n)
488
+ (resolve-global
489
+ n
490
+ (if (syntax-object? id) (syntax-object-module id) mod)))
491
+ ((string? n)
492
+ (resolve-lexical
493
+ n
494
+ (if (syntax-object? id) (syntax-object-module id) mod)))
495
+ (else (error "unexpected id-var-name" id w n)))))))
496
+ (transformer-environment
497
+ (make-fluid
498
+ (lambda (k)
499
+ (error "called outside the dynamic extent of a syntax transformer"))))
500
+ (with-transformer-environment
501
+ (lambda (k) ((fluid-ref transformer-environment) k)))
502
+ (free-id=?
503
+ (lambda (i j)
504
+ (let* ((mi (and (syntax-object? i) (syntax-object-module i)))
505
+ (mj (and (syntax-object? j) (syntax-object-module j)))
506
+ (ni (id-var-name i '(()) mi))
507
+ (nj (id-var-name j '(()) mj)))
508
+ (letrec*
509
+ ((id-module-binding
510
+ (lambda (id mod)
511
+ (module-variable
512
+ (if mod (resolve-module (cdr mod)) (current-module))
513
+ (let ((x id)) (if (syntax-object? x) (syntax-object-expression x) x))))))
514
+ (cond ((syntax-object? ni) (free-id=? ni j))
515
+ ((syntax-object? nj) (free-id=? i nj))
516
+ ((symbol? ni)
517
+ (and (eq? nj
518
+ (let ((x j)) (if (syntax-object? x) (syntax-object-expression x) x)))
519
+ (let ((bi (id-module-binding i mi)))
520
+ (if bi
521
+ (eq? bi (id-module-binding j mj))
522
+ (and (not (id-module-binding j mj)) (eq? ni nj))))
523
+ (eq? (id-module-binding i mi) (id-module-binding j mj))))
524
+ (else (equal? ni nj)))))))
525
+ (bound-id=?
526
+ (lambda (i j)
527
+ (if (and (syntax-object? i) (syntax-object? j))
528
+ (and (eq? (syntax-object-expression i) (syntax-object-expression j))
529
+ (same-marks?
530
+ (car (syntax-object-wrap i))
531
+ (car (syntax-object-wrap j))))
532
+ (eq? i j))))
533
+ (valid-bound-ids?
534
+ (lambda (ids)
535
+ (and (let all-ids? ((ids ids))
536
+ (or (null? ids) (and (id? (car ids)) (all-ids? (cdr ids)))))
537
+ (distinct-bound-ids? ids))))
538
+ (distinct-bound-ids?
539
+ (lambda (ids)
540
+ (let distinct? ((ids ids))
541
+ (or (null? ids)
542
+ (and (not (bound-id-member? (car ids) (cdr ids)))
543
+ (distinct? (cdr ids)))))))
544
+ (bound-id-member?
545
+ (lambda (x list)
546
+ (and (not (null? list))
547
+ (or (bound-id=? x (car list)) (bound-id-member? x (cdr list))))))
548
+ (wrap (lambda (x w defmod)
549
+ (cond ((and (null? (car w)) (null? (cdr w))) x)
550
+ ((syntax-object? x)
551
+ (make-syntax-object
552
+ (syntax-object-expression x)
553
+ (join-wraps w (syntax-object-wrap x))
554
+ (syntax-object-module x)))
555
+ ((null? x) x)
556
+ (else (make-syntax-object x w defmod)))))
557
+ (source-wrap
558
+ (lambda (x w s defmod) (wrap (decorate-source x s) w defmod)))
559
+ (expand-sequence
560
+ (lambda (body r w s mod)
561
+ (build-sequence
562
+ s
563
+ (let dobody ((body body) (r r) (w w) (mod mod))
564
+ (if (null? body)
565
+ '()
566
+ (let ((first (expand (car body) r w mod)))
567
+ (cons first (dobody (cdr body) r w mod))))))))
568
+ (expand-top-sequence
569
+ (lambda (body r w s m esew mod)
570
+ (let* ((r (cons '("placeholder" placeholder) r))
571
+ (ribcage (make-ribcage '() '() '()))
572
+ (w (cons (car w) (cons ribcage (cdr w)))))
573
+ (letrec*
574
+ ((record-definition!
575
+ (lambda (id var)
576
+ (let ((mod (cons 'hygiene (module-name (current-module)))))
577
+ (extend-ribcage!
578
+ ribcage
579
+ id
580
+ (cons (syntax-object-module id) (wrap var '((top)) mod))))))
581
+ (macro-introduced-identifier?
582
+ (lambda (id) (not (equal? (car (syntax-object-wrap id)) '(top)))))
583
+ (fresh-derived-name
584
+ (lambda (id orig-form)
585
+ (symbol-append
586
+ (syntax-object-expression id)
587
+ '-
588
+ (string->symbol
589
+ (number->string
590
+ (hash (syntax->datum orig-form) most-positive-fixnum)
591
+ 16)))))
592
+ (parse (lambda (body r w s m esew mod)
593
+ (let lp ((body body) (exps '()))
594
+ (if (null? body)
595
+ exps
596
+ (lp (cdr body) (append (parse1 (car body) r w s m esew mod) exps))))))
597
+ (parse1
598
+ (lambda (x r w s m esew mod)
599
+ (letrec*
600
+ ((current-module-for-expansion
601
+ (lambda (mod)
602
+ (let ((key (car mod)))
603
+ (if (memv key '(hygiene))
604
+ (cons 'hygiene (module-name (current-module)))
605
+ mod)))))
606
+ (call-with-values
607
+ (lambda ()
608
+ (let ((mod (current-module-for-expansion mod)))
609
+ (syntax-type x r w (source-annotation x) ribcage mod #f)))
610
+ (lambda (type value form e w s mod)
611
+ (let ((key type))
612
+ (cond ((memv key '(define-form))
613
+ (let* ((id (wrap value w mod))
614
+ (label (gen-label))
615
+ (var (if (macro-introduced-identifier? id)
616
+ (fresh-derived-name id x)
617
+ (syntax-object-expression id))))
618
+ (record-definition! id var)
619
+ (list (if (eq? m 'c&e)
620
+ (let ((x (build-global-definition s var (expand e r w mod))))
621
+ (top-level-eval-hook x mod)
622
+ (lambda () x))
623
+ (call-with-values
624
+ (lambda () (resolve-identifier id '(()) r mod #t))
625
+ (lambda (type* value* mod*)
626
+ (if (eq? type* 'macro)
627
+ (top-level-eval-hook
628
+ (build-global-definition s var (build-void s))
629
+ mod))
630
+ (lambda () (build-global-definition s var (expand e r w mod)))))))))
631
+ ((memv key '(define-syntax-form define-syntax-parameter-form))
632
+ (let* ((id (wrap value w mod))
633
+ (label (gen-label))
634
+ (var (if (macro-introduced-identifier? id)
635
+ (fresh-derived-name id x)
636
+ (syntax-object-expression id))))
637
+ (record-definition! id var)
638
+ (let ((key m))
639
+ (cond ((memv key '(c))
640
+ (cond ((memq 'compile esew)
641
+ (let ((e (expand-install-global var type (expand e r w mod))))
642
+ (top-level-eval-hook e mod)
643
+ (if (memq 'load esew) (list (lambda () e)) '())))
644
+ ((memq 'load esew)
645
+ (list (lambda ()
646
+ (expand-install-global var type (expand e r w mod)))))
647
+ (else '())))
648
+ ((memv key '(c&e))
649
+ (let ((e (expand-install-global var type (expand e r w mod))))
650
+ (top-level-eval-hook e mod)
651
+ (list (lambda () e))))
652
+ (else
653
+ (if (memq 'eval esew)
654
+ (top-level-eval-hook
655
+ (expand-install-global var type (expand e r w mod))
656
+ mod))
657
+ '())))))
658
+ ((memv key '(begin-form))
659
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ . each-any))))
660
+ (if tmp
661
+ (apply (lambda (e1) (parse e1 r w s m esew mod)) tmp)
662
+ (syntax-violation
663
+ #f
664
+ "source expression failed to match any pattern"
665
+ tmp-1))))
666
+ ((memv key '(local-syntax-form))
667
+ (expand-local-syntax
668
+ value
669
+ e
670
+ r
671
+ w
672
+ s
673
+ mod
674
+ (lambda (forms r w s mod) (parse forms r w s m esew mod))))
675
+ ((memv key '(eval-when-form))
676
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ each-any any . each-any))))
677
+ (if tmp
678
+ (apply (lambda (x e1 e2)
679
+ (let ((when-list (parse-when-list e x)) (body (cons e1 e2)))
680
+ (letrec*
681
+ ((recurse (lambda (m esew) (parse body r w s m esew mod))))
682
+ (cond ((eq? m 'e)
683
+ (if (memq 'eval when-list)
684
+ (recurse (if (memq 'expand when-list) 'c&e 'e) '(eval))
685
+ (begin
686
+ (if (memq 'expand when-list)
687
+ (top-level-eval-hook
688
+ (expand-top-sequence body r w s 'e '(eval) mod)
689
+ mod))
690
+ '())))
691
+ ((memq 'load when-list)
692
+ (cond ((or (memq 'compile when-list)
693
+ (memq 'expand when-list)
694
+ (and (eq? m 'c&e) (memq 'eval when-list)))
695
+ (recurse 'c&e '(compile load)))
696
+ ((memq m '(c c&e)) (recurse 'c '(load)))
697
+ (else '())))
698
+ ((or (memq 'compile when-list)
699
+ (memq 'expand when-list)
700
+ (and (eq? m 'c&e) (memq 'eval when-list)))
701
+ (top-level-eval-hook
702
+ (expand-top-sequence body r w s 'e '(eval) mod)
703
+ mod)
704
+ '())
705
+ (else '())))))
706
+ tmp)
707
+ (syntax-violation
708
+ #f
709
+ "source expression failed to match any pattern"
710
+ tmp-1))))
711
+ (else
712
+ (list (if (eq? m 'c&e)
713
+ (let ((x (expand-expr type value form e r w s mod)))
714
+ (top-level-eval-hook x mod)
715
+ (lambda () x))
716
+ (lambda () (expand-expr type value form e r w s mod)))))))))))))
717
+ (let ((exps (map (lambda (x) (x)) (reverse (parse body r w s m esew mod)))))
718
+ (if (null? exps) (build-void s) (build-sequence s exps)))))))
719
+ (expand-install-global
720
+ (lambda (name type e)
721
+ (build-global-definition
722
+ #f
723
+ name
724
+ (build-primcall
725
+ #f
726
+ 'make-syntax-transformer
727
+ (list (build-data #f name)
728
+ (build-data
729
+ #f
730
+ (if (eq? type 'define-syntax-parameter-form)
731
+ 'syntax-parameter
732
+ 'macro))
733
+ e)))))
734
+ (parse-when-list
735
+ (lambda (e when-list)
736
+ (let ((result (strip when-list '(()))))
737
+ (let lp ((l result))
738
+ (cond ((null? l) result)
739
+ ((memq (car l) '(compile load eval expand)) (lp (cdr l)))
740
+ (else (syntax-violation 'eval-when "invalid situation" e (car l))))))))
741
+ (syntax-type
742
+ (lambda (e r w s rib mod for-car?)
743
+ (cond ((symbol? e)
744
+ (call-with-values
745
+ (lambda () (resolve-identifier e w r mod #t))
746
+ (lambda (type value mod*)
747
+ (let ((key type))
748
+ (cond ((memv key '(macro))
749
+ (if for-car?
750
+ (values type value e e w s mod)
751
+ (syntax-type
752
+ (expand-macro value e r w s rib mod)
753
+ r
754
+ '(())
755
+ s
756
+ rib
757
+ mod
758
+ #f)))
759
+ ((memv key '(global)) (values type value e value w s mod*))
760
+ (else (values type value e e w s mod)))))))
761
+ ((pair? e)
762
+ (let ((first (car e)))
763
+ (call-with-values
764
+ (lambda () (syntax-type first r w s rib mod #t))
765
+ (lambda (ftype fval fform fe fw fs fmod)
766
+ (let ((key ftype))
767
+ (cond ((memv key '(lexical)) (values 'lexical-call fval e e w s mod))
768
+ ((memv key '(global))
769
+ (if (equal? fmod '(primitive))
770
+ (values 'primitive-call fval e e w s mod)
771
+ (values 'global-call (make-syntax-object fval w fmod) e e w s mod)))
772
+ ((memv key '(macro))
773
+ (syntax-type
774
+ (expand-macro fval e r w s rib mod)
775
+ r
776
+ '(())
777
+ s
778
+ rib
779
+ mod
780
+ for-car?))
781
+ ((memv key '(module-ref))
782
+ (call-with-values
783
+ (lambda () (fval e r w mod))
784
+ (lambda (e r w s mod) (syntax-type e r w s rib mod for-car?))))
785
+ ((memv key '(core)) (values 'core-form fval e e w s mod))
786
+ ((memv key '(local-syntax))
787
+ (values 'local-syntax-form fval e e w s mod))
788
+ ((memv key '(begin)) (values 'begin-form #f e e w s mod))
789
+ ((memv key '(eval-when)) (values 'eval-when-form #f e e w s mod))
790
+ ((memv key '(define))
791
+ (let* ((tmp e) (tmp-1 ($sc-dispatch tmp '(_ any any))))
792
+ (if (and tmp-1 (apply (lambda (name val) (id? name)) tmp-1))
793
+ (apply (lambda (name val) (values 'define-form name e val w s mod))
794
+ tmp-1)
795
+ (let ((tmp-1 ($sc-dispatch tmp '(_ (any . any) any . each-any))))
796
+ (if (and tmp-1
797
+ (apply (lambda (name args e1 e2)
798
+ (and (id? name) (valid-bound-ids? (lambda-var-list args))))
799
+ tmp-1))
800
+ (apply (lambda (name args e1 e2)
801
+ (values
802
+ 'define-form
803
+ (wrap name w mod)
804
+ (wrap e w mod)
805
+ (decorate-source
806
+ (cons (make-syntax 'lambda '((top)) '(hygiene guile))
807
+ (wrap (cons args (cons e1 e2)) w mod))
808
+ s)
809
+ '(())
810
+ s
811
+ mod))
812
+ tmp-1)
813
+ (let ((tmp-1 ($sc-dispatch tmp '(_ any))))
814
+ (if (and tmp-1 (apply (lambda (name) (id? name)) tmp-1))
815
+ (apply (lambda (name)
816
+ (values
817
+ 'define-form
818
+ (wrap name w mod)
819
+ (wrap e w mod)
820
+ (list (make-syntax 'if '((top)) '(hygiene guile)) #f #f)
821
+ '(())
822
+ s
823
+ mod))
824
+ tmp-1)
825
+ (syntax-violation
826
+ #f
827
+ "source expression failed to match any pattern"
828
+ tmp))))))))
829
+ ((memv key '(define-syntax))
830
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ any any))))
831
+ (if (and tmp (apply (lambda (name val) (id? name)) tmp))
832
+ (apply (lambda (name val) (values 'define-syntax-form name e val w s mod))
833
+ tmp)
834
+ (syntax-violation
835
+ #f
836
+ "source expression failed to match any pattern"
837
+ tmp-1))))
838
+ ((memv key '(define-syntax-parameter))
839
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ any any))))
840
+ (if (and tmp (apply (lambda (name val) (id? name)) tmp))
841
+ (apply (lambda (name val)
842
+ (values 'define-syntax-parameter-form name e val w s mod))
843
+ tmp)
844
+ (syntax-violation
845
+ #f
846
+ "source expression failed to match any pattern"
847
+ tmp-1))))
848
+ (else (values 'call #f e e w s mod))))))))
849
+ ((syntax-object? e)
850
+ (syntax-type
851
+ (syntax-object-expression e)
852
+ r
853
+ (join-wraps w (syntax-object-wrap e))
854
+ (or (source-annotation e) s)
855
+ rib
856
+ (or (syntax-object-module e) mod)
857
+ for-car?))
858
+ ((self-evaluating? e) (values 'constant #f e e w s mod))
859
+ (else (values 'other #f e e w s mod)))))
860
+ (expand
861
+ (lambda (e r w mod)
862
+ (call-with-values
863
+ (lambda () (syntax-type e r w (source-annotation e) #f mod #f))
864
+ (lambda (type value form e w s mod)
865
+ (expand-expr type value form e r w s mod)))))
866
+ (expand-expr
867
+ (lambda (type value form e r w s mod)
868
+ (let ((key type))
869
+ (cond ((memv key '(lexical)) (build-lexical-reference 'value s e value))
870
+ ((memv key '(core core-form)) (value e r w s mod))
871
+ ((memv key '(module-ref))
872
+ (call-with-values
873
+ (lambda () (value e r w mod))
874
+ (lambda (e r w s mod) (expand e r w mod))))
875
+ ((memv key '(lexical-call))
876
+ (expand-call
877
+ (let ((id (car e)))
878
+ (build-lexical-reference
879
+ 'fun
880
+ (source-annotation id)
881
+ (if (syntax-object? id) (syntax->datum id) id)
882
+ value))
883
+ e
884
+ r
885
+ w
886
+ s
887
+ mod))
888
+ ((memv key '(global-call))
889
+ (expand-call
890
+ (build-global-reference
891
+ (source-annotation (car e))
892
+ (if (syntax-object? value) (syntax-object-expression value) value)
893
+ (if (syntax-object? value) (syntax-object-module value) mod))
894
+ e
895
+ r
896
+ w
897
+ s
898
+ mod))
899
+ ((memv key '(primitive-call))
900
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ . each-any))))
901
+ (if tmp
902
+ (apply (lambda (e)
903
+ (build-primcall s value (map (lambda (e) (expand e r w mod)) e)))
904
+ tmp)
905
+ (syntax-violation
906
+ #f
907
+ "source expression failed to match any pattern"
908
+ tmp-1))))
909
+ ((memv key '(constant))
910
+ (build-data s (strip (source-wrap e w s mod) '(()))))
911
+ ((memv key '(global)) (build-global-reference s value mod))
912
+ ((memv key '(call))
913
+ (expand-call (expand (car e) r w mod) e r w s mod))
914
+ ((memv key '(begin-form))
915
+ (let* ((tmp e) (tmp-1 ($sc-dispatch tmp '(_ any . each-any))))
916
+ (if tmp-1
917
+ (apply (lambda (e1 e2) (expand-sequence (cons e1 e2) r w s mod))
918
+ tmp-1)
919
+ (let ((tmp-1 ($sc-dispatch tmp '(_))))
920
+ (if tmp-1
921
+ (apply (lambda ()
922
+ (syntax-violation
923
+ #f
924
+ "sequence of zero expressions"
925
+ (source-wrap e w s mod)))
926
+ tmp-1)
927
+ (syntax-violation
928
+ #f
929
+ "source expression failed to match any pattern"
930
+ tmp))))))
931
+ ((memv key '(local-syntax-form))
932
+ (expand-local-syntax value e r w s mod expand-sequence))
933
+ ((memv key '(eval-when-form))
934
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ each-any any . each-any))))
935
+ (if tmp
936
+ (apply (lambda (x e1 e2)
937
+ (let ((when-list (parse-when-list e x)))
938
+ (if (memq 'eval when-list)
939
+ (expand-sequence (cons e1 e2) r w s mod)
940
+ (expand-void))))
941
+ tmp)
942
+ (syntax-violation
943
+ #f
944
+ "source expression failed to match any pattern"
945
+ tmp-1))))
946
+ ((memv key
947
+ '(define-form define-syntax-form define-syntax-parameter-form))
948
+ (syntax-violation
949
+ #f
950
+ "definition in expression context, where definitions are not allowed,"
951
+ (source-wrap form w s mod)))
952
+ ((memv key '(syntax))
953
+ (syntax-violation
954
+ #f
955
+ "reference to pattern variable outside syntax form"
956
+ (source-wrap e w s mod)))
957
+ ((memv key '(displaced-lexical))
958
+ (syntax-violation
959
+ #f
960
+ "reference to identifier outside its scope"
961
+ (source-wrap e w s mod)))
962
+ (else
963
+ (syntax-violation #f "unexpected syntax" (source-wrap e w s mod)))))))
964
+ (expand-call
965
+ (lambda (x e r w s mod)
966
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(any . each-any))))
967
+ (if tmp
968
+ (apply (lambda (e0 e1)
969
+ (build-call s x (map (lambda (e) (expand e r w mod)) e1)))
970
+ tmp)
971
+ (syntax-violation
972
+ #f
973
+ "source expression failed to match any pattern"
974
+ tmp-1)))))
975
+ (expand-macro
976
+ (lambda (p e r w s rib mod)
977
+ (letrec*
978
+ ((rebuild-macro-output
979
+ (lambda (x m)
980
+ (cond ((pair? x)
981
+ (decorate-source
982
+ (cons (rebuild-macro-output (car x) m)
983
+ (rebuild-macro-output (cdr x) m))
984
+ s))
985
+ ((syntax-object? x)
986
+ (let ((w (syntax-object-wrap x)))
987
+ (let ((ms (car w)) (ss (cdr w)))
988
+ (if (and (pair? ms) (eq? (car ms) #f))
989
+ (make-syntax-object
990
+ (syntax-object-expression x)
991
+ (cons (cdr ms) (if rib (cons rib (cdr ss)) (cdr ss)))
992
+ (syntax-object-module x))
993
+ (make-syntax-object
994
+ (decorate-source (syntax-object-expression x) s)
995
+ (cons (cons m ms)
996
+ (if rib (cons rib (cons 'shift ss)) (cons 'shift ss)))
997
+ (syntax-object-module x))))))
998
+ ((vector? x)
999
+ (let* ((n (vector-length x)) (v (decorate-source (make-vector n) s)))
1000
+ (let loop ((i 0))
1001
+ (if (= i n)
1002
+ (begin (if #f #f) v)
1003
+ (begin
1004
+ (vector-set! v i (rebuild-macro-output (vector-ref x i) m))
1005
+ (loop (+ i 1)))))))
1006
+ ((symbol? x)
1007
+ (syntax-violation
1008
+ #f
1009
+ "encountered raw symbol in macro output"
1010
+ (source-wrap e w (cdr w) mod)
1011
+ x))
1012
+ (else (decorate-source x s))))))
1013
+ (let* ((t-680b775fb37a463-7d8 transformer-environment)
1014
+ (t-680b775fb37a463-7d9 (lambda (k) (k e r w s rib mod))))
1015
+ (with-fluid*
1016
+ t-680b775fb37a463-7d8
1017
+ t-680b775fb37a463-7d9
1018
+ (lambda ()
1019
+ (rebuild-macro-output
1020
+ (p (source-wrap e (anti-mark w) s mod))
1021
+ (module-gensym "m"))))))))
1022
+ (expand-body
1023
+ (lambda (body outer-form r w mod)
1024
+ (let* ((r (cons '("placeholder" placeholder) r))
1025
+ (ribcage (make-ribcage '() '() '()))
1026
+ (w (cons (car w) (cons ribcage (cdr w)))))
1027
+ (let parse ((body (map (lambda (x) (cons r (wrap x w mod))) body))
1028
+ (ids '())
1029
+ (labels '())
1030
+ (var-ids '())
1031
+ (vars '())
1032
+ (vals '())
1033
+ (bindings '()))
1034
+ (if (null? body)
1035
+ (syntax-violation #f "no expressions in body" outer-form)
1036
+ (let ((e (cdar body)) (er (caar body)))
1037
+ (call-with-values
1038
+ (lambda ()
1039
+ (syntax-type e er '(()) (source-annotation e) ribcage mod #f))
1040
+ (lambda (type value form e w s mod)
1041
+ (let ((key type))
1042
+ (cond ((memv key '(define-form))
1043
+ (let ((id (wrap value w mod)) (label (gen-label)))
1044
+ (let ((var (gen-var id)))
1045
+ (extend-ribcage! ribcage id label)
1046
+ (parse (cdr body)
1047
+ (cons id ids)
1048
+ (cons label labels)
1049
+ (cons id var-ids)
1050
+ (cons var vars)
1051
+ (cons (cons er (wrap e w mod)) vals)
1052
+ (cons (cons 'lexical var) bindings)))))
1053
+ ((memv key '(define-syntax-form))
1054
+ (let ((id (wrap value w mod))
1055
+ (label (gen-label))
1056
+ (trans-r (macros-only-env er)))
1057
+ (extend-ribcage! ribcage id label)
1058
+ (set-cdr!
1059
+ r
1060
+ (extend-env
1061
+ (list label)
1062
+ (list (cons 'macro (eval-local-transformer (expand e trans-r w mod) mod)))
1063
+ (cdr r)))
1064
+ (parse (cdr body) (cons id ids) labels var-ids vars vals bindings)))
1065
+ ((memv key '(define-syntax-parameter-form))
1066
+ (let ((id (wrap value w mod))
1067
+ (label (gen-label))
1068
+ (trans-r (macros-only-env er)))
1069
+ (extend-ribcage! ribcage id label)
1070
+ (set-cdr!
1071
+ r
1072
+ (extend-env
1073
+ (list label)
1074
+ (list (cons 'syntax-parameter
1075
+ (eval-local-transformer (expand e trans-r w mod) mod)))
1076
+ (cdr r)))
1077
+ (parse (cdr body) (cons id ids) labels var-ids vars vals bindings)))
1078
+ ((memv key '(begin-form))
1079
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ . each-any))))
1080
+ (if tmp
1081
+ (apply (lambda (e1)
1082
+ (parse (let f ((forms e1))
1083
+ (if (null? forms)
1084
+ (cdr body)
1085
+ (cons (cons er (wrap (car forms) w mod)) (f (cdr forms)))))
1086
+ ids
1087
+ labels
1088
+ var-ids
1089
+ vars
1090
+ vals
1091
+ bindings))
1092
+ tmp)
1093
+ (syntax-violation
1094
+ #f
1095
+ "source expression failed to match any pattern"
1096
+ tmp-1))))
1097
+ ((memv key '(local-syntax-form))
1098
+ (expand-local-syntax
1099
+ value
1100
+ e
1101
+ er
1102
+ w
1103
+ s
1104
+ mod
1105
+ (lambda (forms er w s mod)
1106
+ (parse (let f ((forms forms))
1107
+ (if (null? forms)
1108
+ (cdr body)
1109
+ (cons (cons er (wrap (car forms) w mod)) (f (cdr forms)))))
1110
+ ids
1111
+ labels
1112
+ var-ids
1113
+ vars
1114
+ vals
1115
+ bindings))))
1116
+ ((null? ids)
1117
+ (build-sequence
1118
+ #f
1119
+ (map (lambda (x) (expand (cdr x) (car x) '(()) mod))
1120
+ (cons (cons er (source-wrap e w s mod)) (cdr body)))))
1121
+ (else
1122
+ (if (not (valid-bound-ids? ids))
1123
+ (syntax-violation
1124
+ #f
1125
+ "invalid or duplicate identifier in definition"
1126
+ outer-form))
1127
+ (set-cdr! r (extend-env labels bindings (cdr r)))
1128
+ (build-letrec
1129
+ #f
1130
+ #t
1131
+ (reverse (map syntax->datum var-ids))
1132
+ (reverse vars)
1133
+ (map (lambda (x) (expand (cdr x) (car x) '(()) mod)) (reverse vals))
1134
+ (build-sequence
1135
+ #f
1136
+ (map (lambda (x) (expand (cdr x) (car x) '(()) mod))
1137
+ (cons (cons er (source-wrap e w s mod)) (cdr body))))))))))))))))
1138
+ (expand-local-syntax
1139
+ (lambda (rec? e r w s mod k)
1140
+ (let* ((tmp e)
1141
+ (tmp ($sc-dispatch tmp '(_ #(each (any any)) any . each-any))))
1142
+ (if tmp
1143
+ (apply (lambda (id val e1 e2)
1144
+ (let ((ids id))
1145
+ (if (not (valid-bound-ids? ids))
1146
+ (syntax-violation #f "duplicate bound keyword" e)
1147
+ (let* ((labels (gen-labels ids)) (new-w (make-binding-wrap ids labels w)))
1148
+ (k (cons e1 e2)
1149
+ (extend-env
1150
+ labels
1151
+ (let ((w (if rec? new-w w)) (trans-r (macros-only-env r)))
1152
+ (map (lambda (x)
1153
+ (cons 'macro (eval-local-transformer (expand x trans-r w mod) mod)))
1154
+ val))
1155
+ r)
1156
+ new-w
1157
+ s
1158
+ mod)))))
1159
+ tmp)
1160
+ (syntax-violation
1161
+ #f
1162
+ "bad local syntax definition"
1163
+ (source-wrap e w s mod))))))
1164
+ (eval-local-transformer
1165
+ (lambda (expanded mod)
1166
+ (let ((p (local-eval-hook expanded mod)))
1167
+ (if (procedure? p)
1168
+ p
1169
+ (syntax-violation #f "nonprocedure transformer" p)))))
1170
+ (expand-void (lambda () (build-void #f)))
1171
+ (ellipsis?
1172
+ (lambda (e r mod)
1173
+ (and (nonsymbol-id? e)
1174
+ (call-with-values
1175
+ (lambda ()
1176
+ (resolve-identifier
1177
+ (make-syntax-object
1178
+ '#{ $sc-ellipsis }#
1179
+ (syntax-object-wrap e)
1180
+ (syntax-object-module e))
1181
+ '(())
1182
+ r
1183
+ mod
1184
+ #f))
1185
+ (lambda (type value mod)
1186
+ (if (eq? type 'ellipsis)
1187
+ (bound-id=? e value)
1188
+ (free-id=? e (make-syntax '... '((top)) '(hygiene guile)))))))))
1189
+ (lambda-formals
1190
+ (lambda (orig-args)
1191
+ (letrec*
1192
+ ((req (lambda (args rreq)
1193
+ (let* ((tmp args) (tmp-1 ($sc-dispatch tmp '())))
1194
+ (if tmp-1
1195
+ (apply (lambda () (check (reverse rreq) #f)) tmp-1)
1196
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1197
+ (if (and tmp-1 (apply (lambda (a b) (id? a)) tmp-1))
1198
+ (apply (lambda (a b) (req b (cons a rreq))) tmp-1)
1199
+ (let ((tmp-1 (list tmp)))
1200
+ (if (and tmp-1 (apply (lambda (r) (id? r)) tmp-1))
1201
+ (apply (lambda (r) (check (reverse rreq) r)) tmp-1)
1202
+ (let ((else tmp))
1203
+ (syntax-violation 'lambda "invalid argument list" orig-args args))))))))))
1204
+ (check (lambda (req rest)
1205
+ (if (distinct-bound-ids? (if rest (cons rest req) req))
1206
+ (values req #f rest #f)
1207
+ (syntax-violation
1208
+ 'lambda
1209
+ "duplicate identifier in argument list"
1210
+ orig-args)))))
1211
+ (req orig-args '()))))
1212
+ (expand-simple-lambda
1213
+ (lambda (e r w s mod req rest meta body)
1214
+ (let* ((ids (if rest (append req (list rest)) req))
1215
+ (vars (map gen-var ids))
1216
+ (labels (gen-labels ids)))
1217
+ (build-simple-lambda
1218
+ s
1219
+ (map syntax->datum req)
1220
+ (and rest (syntax->datum rest))
1221
+ vars
1222
+ meta
1223
+ (expand-body
1224
+ body
1225
+ (source-wrap e w s mod)
1226
+ (extend-var-env labels vars r)
1227
+ (make-binding-wrap ids labels w)
1228
+ mod)))))
1229
+ (lambda*-formals
1230
+ (lambda (orig-args)
1231
+ (letrec*
1232
+ ((req (lambda (args rreq)
1233
+ (let* ((tmp args) (tmp-1 ($sc-dispatch tmp '())))
1234
+ (if tmp-1
1235
+ (apply (lambda () (check (reverse rreq) '() #f '())) tmp-1)
1236
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1237
+ (if (and tmp-1 (apply (lambda (a b) (id? a)) tmp-1))
1238
+ (apply (lambda (a b) (req b (cons a rreq))) tmp-1)
1239
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1240
+ (if (and tmp-1
1241
+ (apply (lambda (a b) (eq? (syntax->datum a) #:optional)) tmp-1))
1242
+ (apply (lambda (a b) (opt b (reverse rreq) '())) tmp-1)
1243
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1244
+ (if (and tmp-1
1245
+ (apply (lambda (a b) (eq? (syntax->datum a) #:key)) tmp-1))
1246
+ (apply (lambda (a b) (key b (reverse rreq) '() '())) tmp-1)
1247
+ (let ((tmp-1 ($sc-dispatch tmp '(any any))))
1248
+ (if (and tmp-1
1249
+ (apply (lambda (a b) (eq? (syntax->datum a) #:rest)) tmp-1))
1250
+ (apply (lambda (a b) (rest b (reverse rreq) '() '())) tmp-1)
1251
+ (let ((tmp-1 (list tmp)))
1252
+ (if (and tmp-1 (apply (lambda (r) (id? r)) tmp-1))
1253
+ (apply (lambda (r) (rest r (reverse rreq) '() '())) tmp-1)
1254
+ (let ((else tmp))
1255
+ (syntax-violation
1256
+ 'lambda*
1257
+ "invalid argument list"
1258
+ orig-args
1259
+ args))))))))))))))))
1260
+ (opt (lambda (args req ropt)
1261
+ (let* ((tmp args) (tmp-1 ($sc-dispatch tmp '())))
1262
+ (if tmp-1
1263
+ (apply (lambda () (check req (reverse ropt) #f '())) tmp-1)
1264
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1265
+ (if (and tmp-1 (apply (lambda (a b) (id? a)) tmp-1))
1266
+ (apply (lambda (a b) (opt b req (cons (cons a '(#f)) ropt))) tmp-1)
1267
+ (let ((tmp-1 ($sc-dispatch tmp '((any any) . any))))
1268
+ (if (and tmp-1 (apply (lambda (a init b) (id? a)) tmp-1))
1269
+ (apply (lambda (a init b) (opt b req (cons (list a init) ropt)))
1270
+ tmp-1)
1271
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1272
+ (if (and tmp-1
1273
+ (apply (lambda (a b) (eq? (syntax->datum a) #:key)) tmp-1))
1274
+ (apply (lambda (a b) (key b req (reverse ropt) '())) tmp-1)
1275
+ (let ((tmp-1 ($sc-dispatch tmp '(any any))))
1276
+ (if (and tmp-1
1277
+ (apply (lambda (a b) (eq? (syntax->datum a) #:rest)) tmp-1))
1278
+ (apply (lambda (a b) (rest b req (reverse ropt) '())) tmp-1)
1279
+ (let ((tmp-1 (list tmp)))
1280
+ (if (and tmp-1 (apply (lambda (r) (id? r)) tmp-1))
1281
+ (apply (lambda (r) (rest r req (reverse ropt) '())) tmp-1)
1282
+ (let ((else tmp))
1283
+ (syntax-violation
1284
+ 'lambda*
1285
+ "invalid optional argument list"
1286
+ orig-args
1287
+ args))))))))))))))))
1288
+ (key (lambda (args req opt rkey)
1289
+ (let* ((tmp args) (tmp-1 ($sc-dispatch tmp '())))
1290
+ (if tmp-1
1291
+ (apply (lambda () (check req opt #f (cons #f (reverse rkey)))) tmp-1)
1292
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1293
+ (if (and tmp-1 (apply (lambda (a b) (id? a)) tmp-1))
1294
+ (apply (lambda (a b)
1295
+ (let* ((tmp (symbol->keyword (syntax->datum a))) (k tmp))
1296
+ (key b req opt (cons (cons k (cons a '(#f))) rkey))))
1297
+ tmp-1)
1298
+ (let ((tmp-1 ($sc-dispatch tmp '((any any) . any))))
1299
+ (if (and tmp-1 (apply (lambda (a init b) (id? a)) tmp-1))
1300
+ (apply (lambda (a init b)
1301
+ (let* ((tmp (symbol->keyword (syntax->datum a))) (k tmp))
1302
+ (key b req opt (cons (list k a init) rkey))))
1303
+ tmp-1)
1304
+ (let ((tmp-1 ($sc-dispatch tmp '((any any any) . any))))
1305
+ (if (and tmp-1
1306
+ (apply (lambda (a init k b) (and (id? a) (keyword? (syntax->datum k))))
1307
+ tmp-1))
1308
+ (apply (lambda (a init k b) (key b req opt (cons (list k a init) rkey)))
1309
+ tmp-1)
1310
+ (let ((tmp-1 ($sc-dispatch tmp '(any))))
1311
+ (if (and tmp-1
1312
+ (apply (lambda (aok) (eq? (syntax->datum aok) #:allow-other-keys))
1313
+ tmp-1))
1314
+ (apply (lambda (aok) (check req opt #f (cons #t (reverse rkey))))
1315
+ tmp-1)
1316
+ (let ((tmp-1 ($sc-dispatch tmp '(any any any))))
1317
+ (if (and tmp-1
1318
+ (apply (lambda (aok a b)
1319
+ (and (eq? (syntax->datum aok) #:allow-other-keys)
1320
+ (eq? (syntax->datum a) #:rest)))
1321
+ tmp-1))
1322
+ (apply (lambda (aok a b) (rest b req opt (cons #t (reverse rkey))))
1323
+ tmp-1)
1324
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1325
+ (if (and tmp-1
1326
+ (apply (lambda (aok r)
1327
+ (and (eq? (syntax->datum aok) #:allow-other-keys)
1328
+ (id? r)))
1329
+ tmp-1))
1330
+ (apply (lambda (aok r) (rest r req opt (cons #t (reverse rkey))))
1331
+ tmp-1)
1332
+ (let ((tmp-1 ($sc-dispatch tmp '(any any))))
1333
+ (if (and tmp-1
1334
+ (apply (lambda (a b) (eq? (syntax->datum a) #:rest)) tmp-1))
1335
+ (apply (lambda (a b) (rest b req opt (cons #f (reverse rkey))))
1336
+ tmp-1)
1337
+ (let ((tmp-1 (list tmp)))
1338
+ (if (and tmp-1 (apply (lambda (r) (id? r)) tmp-1))
1339
+ (apply (lambda (r) (rest r req opt (cons #f (reverse rkey))))
1340
+ tmp-1)
1341
+ (let ((else tmp))
1342
+ (syntax-violation
1343
+ 'lambda*
1344
+ "invalid keyword argument list"
1345
+ orig-args
1346
+ args))))))))))))))))))))))
1347
+ (rest (lambda (args req opt kw)
1348
+ (let* ((tmp-1 args) (tmp (list tmp-1)))
1349
+ (if (and tmp (apply (lambda (r) (id? r)) tmp))
1350
+ (apply (lambda (r) (check req opt r kw)) tmp)
1351
+ (let ((else tmp-1))
1352
+ (syntax-violation 'lambda* "invalid rest argument" orig-args args))))))
1353
+ (check (lambda (req opt rest kw)
1354
+ (if (distinct-bound-ids?
1355
+ (append
1356
+ req
1357
+ (map car opt)
1358
+ (if rest (list rest) '())
1359
+ (if (pair? kw) (map cadr (cdr kw)) '())))
1360
+ (values req opt rest kw)
1361
+ (syntax-violation
1362
+ 'lambda*
1363
+ "duplicate identifier in argument list"
1364
+ orig-args)))))
1365
+ (req orig-args '()))))
1366
+ (expand-lambda-case
1367
+ (lambda (e r w s mod get-formals clauses)
1368
+ (letrec*
1369
+ ((parse-req
1370
+ (lambda (req opt rest kw body)
1371
+ (let ((vars (map gen-var req)) (labels (gen-labels req)))
1372
+ (let ((r* (extend-var-env labels vars r))
1373
+ (w* (make-binding-wrap req labels w)))
1374
+ (parse-opt
1375
+ (map syntax->datum req)
1376
+ opt
1377
+ rest
1378
+ kw
1379
+ body
1380
+ (reverse vars)
1381
+ r*
1382
+ w*
1383
+ '()
1384
+ '())))))
1385
+ (parse-opt
1386
+ (lambda (req opt rest kw body vars r* w* out inits)
1387
+ (cond ((pair? opt)
1388
+ (let* ((tmp-1 (car opt)) (tmp ($sc-dispatch tmp-1 '(any any))))
1389
+ (if tmp
1390
+ (apply (lambda (id i)
1391
+ (let* ((v (gen-var id))
1392
+ (l (gen-labels (list v)))
1393
+ (r** (extend-var-env l (list v) r*))
1394
+ (w** (make-binding-wrap (list id) l w*)))
1395
+ (parse-opt
1396
+ req
1397
+ (cdr opt)
1398
+ rest
1399
+ kw
1400
+ body
1401
+ (cons v vars)
1402
+ r**
1403
+ w**
1404
+ (cons (syntax->datum id) out)
1405
+ (cons (expand i r* w* mod) inits))))
1406
+ tmp)
1407
+ (syntax-violation
1408
+ #f
1409
+ "source expression failed to match any pattern"
1410
+ tmp-1))))
1411
+ (rest
1412
+ (let* ((v (gen-var rest))
1413
+ (l (gen-labels (list v)))
1414
+ (r* (extend-var-env l (list v) r*))
1415
+ (w* (make-binding-wrap (list rest) l w*)))
1416
+ (parse-kw
1417
+ req
1418
+ (and (pair? out) (reverse out))
1419
+ (syntax->datum rest)
1420
+ (if (pair? kw) (cdr kw) kw)
1421
+ body
1422
+ (cons v vars)
1423
+ r*
1424
+ w*
1425
+ (and (pair? kw) (car kw))
1426
+ '()
1427
+ inits)))
1428
+ (else
1429
+ (parse-kw
1430
+ req
1431
+ (and (pair? out) (reverse out))
1432
+ #f
1433
+ (if (pair? kw) (cdr kw) kw)
1434
+ body
1435
+ vars
1436
+ r*
1437
+ w*
1438
+ (and (pair? kw) (car kw))
1439
+ '()
1440
+ inits)))))
1441
+ (parse-kw
1442
+ (lambda (req opt rest kw body vars r* w* aok out inits)
1443
+ (if (pair? kw)
1444
+ (let* ((tmp-1 (car kw)) (tmp ($sc-dispatch tmp-1 '(any any any))))
1445
+ (if tmp
1446
+ (apply (lambda (k id i)
1447
+ (let* ((v (gen-var id))
1448
+ (l (gen-labels (list v)))
1449
+ (r** (extend-var-env l (list v) r*))
1450
+ (w** (make-binding-wrap (list id) l w*)))
1451
+ (parse-kw
1452
+ req
1453
+ opt
1454
+ rest
1455
+ (cdr kw)
1456
+ body
1457
+ (cons v vars)
1458
+ r**
1459
+ w**
1460
+ aok
1461
+ (cons (list (syntax->datum k) (syntax->datum id) v) out)
1462
+ (cons (expand i r* w* mod) inits))))
1463
+ tmp)
1464
+ (syntax-violation
1465
+ #f
1466
+ "source expression failed to match any pattern"
1467
+ tmp-1)))
1468
+ (parse-body
1469
+ req
1470
+ opt
1471
+ rest
1472
+ (and (or aok (pair? out)) (cons aok (reverse out)))
1473
+ body
1474
+ (reverse vars)
1475
+ r*
1476
+ w*
1477
+ (reverse inits)
1478
+ '()))))
1479
+ (parse-body
1480
+ (lambda (req opt rest kw body vars r* w* inits meta)
1481
+ (let* ((tmp body) (tmp-1 ($sc-dispatch tmp '(any any . each-any))))
1482
+ (if (and tmp-1
1483
+ (apply (lambda (docstring e1 e2) (string? (syntax->datum docstring)))
1484
+ tmp-1))
1485
+ (apply (lambda (docstring e1 e2)
1486
+ (parse-body
1487
+ req
1488
+ opt
1489
+ rest
1490
+ kw
1491
+ (cons e1 e2)
1492
+ vars
1493
+ r*
1494
+ w*
1495
+ inits
1496
+ (append meta (list (cons 'documentation (syntax->datum docstring))))))
1497
+ tmp-1)
1498
+ (let ((tmp-1 ($sc-dispatch tmp '(#(vector #(each (any . any))) any . each-any))))
1499
+ (if tmp-1
1500
+ (apply (lambda (k v e1 e2)
1501
+ (parse-body
1502
+ req
1503
+ opt
1504
+ rest
1505
+ kw
1506
+ (cons e1 e2)
1507
+ vars
1508
+ r*
1509
+ w*
1510
+ inits
1511
+ (append meta (syntax->datum (map cons k v)))))
1512
+ tmp-1)
1513
+ (let ((tmp-1 ($sc-dispatch tmp '(any . each-any))))
1514
+ (if tmp-1
1515
+ (apply (lambda (e1 e2)
1516
+ (values
1517
+ meta
1518
+ req
1519
+ opt
1520
+ rest
1521
+ kw
1522
+ inits
1523
+ vars
1524
+ (expand-body (cons e1 e2) (source-wrap e w s mod) r* w* mod)))
1525
+ tmp-1)
1526
+ (syntax-violation
1527
+ #f
1528
+ "source expression failed to match any pattern"
1529
+ tmp))))))))))
1530
+ (let* ((tmp clauses) (tmp-1 ($sc-dispatch tmp '())))
1531
+ (if tmp-1
1532
+ (apply (lambda () (values '() #f)) tmp-1)
1533
+ (let ((tmp-1 ($sc-dispatch
1534
+ tmp
1535
+ '((any any . each-any) . #(each (any any . each-any))))))
1536
+ (if tmp-1
1537
+ (apply (lambda (args e1 e2 args* e1* e2*)
1538
+ (call-with-values
1539
+ (lambda () (get-formals args))
1540
+ (lambda (req opt rest kw)
1541
+ (call-with-values
1542
+ (lambda () (parse-req req opt rest kw (cons e1 e2)))
1543
+ (lambda (meta req opt rest kw inits vars body)
1544
+ (call-with-values
1545
+ (lambda ()
1546
+ (expand-lambda-case
1547
+ e
1548
+ r
1549
+ w
1550
+ s
1551
+ mod
1552
+ get-formals
1553
+ (map (lambda (tmp-680b775fb37a463-ac9
1554
+ tmp-680b775fb37a463-ac8
1555
+ tmp-680b775fb37a463-ac7)
1556
+ (cons tmp-680b775fb37a463-ac7
1557
+ (cons tmp-680b775fb37a463-ac8 tmp-680b775fb37a463-ac9)))
1558
+ e2*
1559
+ e1*
1560
+ args*)))
1561
+ (lambda (meta* else*)
1562
+ (values
1563
+ (append meta meta*)
1564
+ (build-lambda-case s req opt rest kw inits vars body else*)))))))))
1565
+ tmp-1)
1566
+ (syntax-violation
1567
+ #f
1568
+ "source expression failed to match any pattern"
1569
+ tmp))))))))
1570
+ (strip (lambda (x w)
1571
+ (if (memq 'top (car w))
1572
+ x
1573
+ (let f ((x x))
1574
+ (cond ((syntax-object? x)
1575
+ (strip (syntax-object-expression x) (syntax-object-wrap x)))
1576
+ ((pair? x)
1577
+ (let ((a (f (car x))) (d (f (cdr x))))
1578
+ (if (and (eq? a (car x)) (eq? d (cdr x))) x (cons a d))))
1579
+ ((vector? x)
1580
+ (let* ((old (vector->list x)) (new (map f old)))
1581
+ (let lp ((l1 old) (l2 new))
1582
+ (cond ((null? l1) x)
1583
+ ((eq? (car l1) (car l2)) (lp (cdr l1) (cdr l2)))
1584
+ (else (list->vector new))))))
1585
+ (else x))))))
1586
+ (gen-var
1587
+ (lambda (id)
1588
+ (let ((id (if (syntax-object? id) (syntax-object-expression id) id)))
1589
+ (module-gensym (symbol->string id)))))
1590
+ (lambda-var-list
1591
+ (lambda (vars)
1592
+ (let lvl ((vars vars) (ls '()) (w '(())))
1593
+ (cond ((pair? vars) (lvl (cdr vars) (cons (wrap (car vars) w #f) ls) w))
1594
+ ((id? vars) (cons (wrap vars w #f) ls))
1595
+ ((null? vars) ls)
1596
+ ((syntax-object? vars)
1597
+ (lvl (syntax-object-expression vars)
1598
+ ls
1599
+ (join-wraps w (syntax-object-wrap vars))))
1600
+ (else (cons vars ls)))))))
1601
+ (global-extend 'local-syntax 'letrec-syntax #t)
1602
+ (global-extend 'local-syntax 'let-syntax #f)
1603
+ (global-extend
1604
+ 'core
1605
+ 'syntax-parameterize
1606
+ (lambda (e r w s mod)
1607
+ (let* ((tmp e)
1608
+ (tmp ($sc-dispatch tmp '(_ #(each (any any)) any . each-any))))
1609
+ (if (and tmp (apply (lambda (var val e1 e2) (valid-bound-ids? var)) tmp))
1610
+ (apply (lambda (var val e1 e2)
1611
+ (let ((names (map (lambda (x)
1612
+ (call-with-values
1613
+ (lambda () (resolve-identifier x w r mod #f))
1614
+ (lambda (type value mod)
1615
+ (let ((key type))
1616
+ (cond ((memv key '(displaced-lexical))
1617
+ (syntax-violation
1618
+ 'syntax-parameterize
1619
+ "identifier out of context"
1620
+ e
1621
+ (source-wrap x w s mod)))
1622
+ ((memv key '(syntax-parameter)) value)
1623
+ (else
1624
+ (syntax-violation
1625
+ 'syntax-parameterize
1626
+ "invalid syntax parameter"
1627
+ e
1628
+ (source-wrap x w s mod))))))))
1629
+ var))
1630
+ (bindings
1631
+ (let ((trans-r (macros-only-env r)))
1632
+ (map (lambda (x)
1633
+ (cons 'syntax-parameter
1634
+ (eval-local-transformer (expand x trans-r w mod) mod)))
1635
+ val))))
1636
+ (expand-body
1637
+ (cons e1 e2)
1638
+ (source-wrap e w s mod)
1639
+ (extend-env names bindings r)
1640
+ w
1641
+ mod)))
1642
+ tmp)
1643
+ (syntax-violation
1644
+ 'syntax-parameterize
1645
+ "bad syntax"
1646
+ (source-wrap e w s mod))))))
1647
+ (global-extend
1648
+ 'core
1649
+ 'quote
1650
+ (lambda (e r w s mod)
1651
+ (let* ((tmp e) (tmp ($sc-dispatch tmp '(_ any))))
1652
+ (if tmp
1653
+ (apply (lambda (e) (build-data s (strip e w))) tmp)
1654
+ (syntax-violation 'quote "bad syntax" (source-wrap e w s mod))))))
1655
+ (global-extend
1656
+ 'core
1657
+ 'syntax
1658
+ (letrec*
1659
+ ((gen-syntax
1660
+ (lambda (src e r maps ellipsis? mod)
1661
+ (if (id? e)
1662
+ (call-with-values
1663
+ (lambda () (resolve-identifier e '(()) r mod #f))
1664
+ (lambda (type value mod)
1665
+ (let ((key type))
1666
+ (cond ((memv key '(syntax))
1667
+ (call-with-values
1668
+ (lambda () (gen-ref src (car value) (cdr value) maps))
1669
+ (lambda (var maps) (values (list 'ref var) maps))))
1670
+ ((ellipsis? e r mod)
1671
+ (syntax-violation 'syntax "misplaced ellipsis" src))
1672
+ (else (values (list 'quote e) maps))))))
1673
+ (let* ((tmp e) (tmp-1 ($sc-dispatch tmp '(any any))))
1674
+ (if (and tmp-1 (apply (lambda (dots e) (ellipsis? dots r mod)) tmp-1))
1675
+ (apply (lambda (dots e) (gen-syntax src e r maps (lambda (e r mod) #f) mod))
1676
+ tmp-1)
1677
+ (let ((tmp-1 ($sc-dispatch tmp '(any any . any))))
1678
+ (if (and tmp-1 (apply (lambda (x dots y) (ellipsis? dots r mod)) tmp-1))
1679
+ (apply (lambda (x dots y)
1680
+ (let f ((y y)
1681
+ (k (lambda (maps)
1682
+ (call-with-values
1683
+ (lambda () (gen-syntax src x r (cons '() maps) ellipsis? mod))
1684
+ (lambda (x maps)
1685
+ (if (null? (car maps))
1686
+ (syntax-violation 'syntax "extra ellipsis" src)
1687
+ (values (gen-map x (car maps)) (cdr maps))))))))
1688
+ (let* ((tmp y) (tmp ($sc-dispatch tmp '(any . any))))
1689
+ (if (and tmp (apply (lambda (dots y) (ellipsis? dots r mod)) tmp))
1690
+ (apply (lambda (dots y)
1691
+ (f y
1692
+ (lambda (maps)
1693
+ (call-with-values
1694
+ (lambda () (k (cons '() maps)))
1695
+ (lambda (x maps)
1696
+ (if (null? (car maps))
1697
+ (syntax-violation 'syntax "extra ellipsis" src)
1698
+ (values (gen-mappend x (car maps)) (cdr maps))))))))
1699
+ tmp)
1700
+ (call-with-values
1701
+ (lambda () (gen-syntax src y r maps ellipsis? mod))
1702
+ (lambda (y maps)
1703
+ (call-with-values
1704
+ (lambda () (k maps))
1705
+ (lambda (x maps) (values (gen-append x y) maps)))))))))
1706
+ tmp-1)
1707
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
1708
+ (if tmp-1
1709
+ (apply (lambda (x y)
1710
+ (call-with-values
1711
+ (lambda () (gen-syntax src x r maps ellipsis? mod))
1712
+ (lambda (x maps)
1713
+ (call-with-values
1714
+ (lambda () (gen-syntax src y r maps ellipsis? mod))
1715
+ (lambda (y maps) (values (gen-cons x y) maps))))))
1716
+ tmp-1)
1717
+ (let ((tmp ($sc-dispatch tmp '#(vector (any . each-any)))))
1718
+ (if tmp
1719
+ (apply (lambda (e1 e2)
1720
+ (call-with-values
1721
+ (lambda () (gen-syntax src (cons e1 e2) r maps ellipsis? mod))
1722
+ (lambda (e maps) (values (gen-vector e) maps))))
1723
+ tmp)
1724
+ (values (list 'quote e) maps))))))))))))
1725
+ (gen-ref
1726
+ (lambda (src var level maps)
1727
+ (cond ((= level 0) (values var maps))
1728
+ ((null? maps) (syntax-violation 'syntax "missing ellipsis" src))
1729
+ (else
1730
+ (call-with-values
1731
+ (lambda () (gen-ref src var (- level 1) (cdr maps)))
1732
+ (lambda (outer-var outer-maps)
1733
+ (let ((b (assq outer-var (car maps))))
1734
+ (if b
1735
+ (values (cdr b) maps)
1736
+ (let ((inner-var (gen-var 'tmp)))
1737
+ (values
1738
+ inner-var
1739
+ (cons (cons (cons outer-var inner-var) (car maps)) outer-maps)))))))))))
1740
+ (gen-mappend
1741
+ (lambda (e map-env)
1742
+ (list 'apply '(primitive append) (gen-map e map-env))))
1743
+ (gen-map
1744
+ (lambda (e map-env)
1745
+ (let ((formals (map cdr map-env))
1746
+ (actuals (map (lambda (x) (list 'ref (car x))) map-env)))
1747
+ (cond ((eq? (car e) 'ref) (car actuals))
1748
+ ((and-map
1749
+ (lambda (x) (and (eq? (car x) 'ref) (memq (cadr x) formals)))
1750
+ (cdr e))
1751
+ (cons 'map
1752
+ (cons (list 'primitive (car e))
1753
+ (map (let ((r (map cons formals actuals)))
1754
+ (lambda (x) (cdr (assq (cadr x) r))))
1755
+ (cdr e)))))
1756
+ (else (cons 'map (cons (list 'lambda formals e) actuals)))))))
1757
+ (gen-cons
1758
+ (lambda (x y)
1759
+ (let ((key (car y)))
1760
+ (cond ((memv key '(quote))
1761
+ (cond ((eq? (car x) 'quote) (list 'quote (cons (cadr x) (cadr y))))
1762
+ ((eq? (cadr y) '()) (list 'list x))
1763
+ (else (list 'cons x y))))
1764
+ ((memv key '(list)) (cons 'list (cons x (cdr y))))
1765
+ (else (list 'cons x y))))))
1766
+ (gen-append (lambda (x y) (if (equal? y ''()) x (list 'append x y))))
1767
+ (gen-vector
1768
+ (lambda (x)
1769
+ (cond ((eq? (car x) 'list) (cons 'vector (cdr x)))
1770
+ ((eq? (car x) 'quote) (list 'quote (list->vector (cadr x))))
1771
+ (else (list 'list->vector x)))))
1772
+ (regen (lambda (x)
1773
+ (let ((key (car x)))
1774
+ (cond ((memv key '(ref))
1775
+ (build-lexical-reference 'value #f (cadr x) (cadr x)))
1776
+ ((memv key '(primitive)) (build-primref #f (cadr x)))
1777
+ ((memv key '(quote)) (build-data #f (cadr x)))
1778
+ ((memv key '(lambda))
1779
+ (if (list? (cadr x))
1780
+ (build-simple-lambda #f (cadr x) #f (cadr x) '() (regen (caddr x)))
1781
+ (error "how did we get here" x)))
1782
+ (else (build-primcall #f (car x) (map regen (cdr x)))))))))
1783
+ (lambda (e r w s mod)
1784
+ (let* ((e (source-wrap e w s mod))
1785
+ (tmp e)
1786
+ (tmp ($sc-dispatch tmp '(_ any))))
1787
+ (if tmp
1788
+ (apply (lambda (x)
1789
+ (call-with-values
1790
+ (lambda () (gen-syntax e x r '() ellipsis? mod))
1791
+ (lambda (e maps) (regen e))))
1792
+ tmp)
1793
+ (syntax-violation 'syntax "bad `syntax' form" e))))))
1794
+ (global-extend
1795
+ 'core
1796
+ 'lambda
1797
+ (lambda (e r w s mod)
1798
+ (let* ((tmp e) (tmp ($sc-dispatch tmp '(_ any any . each-any))))
1799
+ (if tmp
1800
+ (apply (lambda (args e1 e2)
1801
+ (call-with-values
1802
+ (lambda () (lambda-formals args))
1803
+ (lambda (req opt rest kw)
1804
+ (let lp ((body (cons e1 e2)) (meta '()))
1805
+ (let* ((tmp-1 body) (tmp ($sc-dispatch tmp-1 '(any any . each-any))))
1806
+ (if (and tmp
1807
+ (apply (lambda (docstring e1 e2) (string? (syntax->datum docstring)))
1808
+ tmp))
1809
+ (apply (lambda (docstring e1 e2)
1810
+ (lp (cons e1 e2)
1811
+ (append meta (list (cons 'documentation (syntax->datum docstring))))))
1812
+ tmp)
1813
+ (let ((tmp ($sc-dispatch tmp-1 '(#(vector #(each (any . any))) any . each-any))))
1814
+ (if tmp
1815
+ (apply (lambda (k v e1 e2)
1816
+ (lp (cons e1 e2) (append meta (syntax->datum (map cons k v)))))
1817
+ tmp)
1818
+ (expand-simple-lambda e r w s mod req rest meta body)))))))))
1819
+ tmp)
1820
+ (syntax-violation 'lambda "bad lambda" e)))))
1821
+ (global-extend
1822
+ 'core
1823
+ 'lambda*
1824
+ (lambda (e r w s mod)
1825
+ (let* ((tmp e) (tmp ($sc-dispatch tmp '(_ any any . each-any))))
1826
+ (if tmp
1827
+ (apply (lambda (args e1 e2)
1828
+ (call-with-values
1829
+ (lambda ()
1830
+ (expand-lambda-case
1831
+ e
1832
+ r
1833
+ w
1834
+ s
1835
+ mod
1836
+ lambda*-formals
1837
+ (list (cons args (cons e1 e2)))))
1838
+ (lambda (meta lcase) (build-case-lambda s meta lcase))))
1839
+ tmp)
1840
+ (syntax-violation 'lambda "bad lambda*" e)))))
1841
+ (global-extend
1842
+ 'core
1843
+ 'case-lambda
1844
+ (lambda (e r w s mod)
1845
+ (letrec*
1846
+ ((build-it
1847
+ (lambda (meta clauses)
1848
+ (call-with-values
1849
+ (lambda () (expand-lambda-case e r w s mod lambda-formals clauses))
1850
+ (lambda (meta* lcase)
1851
+ (build-case-lambda s (append meta meta*) lcase))))))
1852
+ (let* ((tmp-1 e)
1853
+ (tmp ($sc-dispatch tmp-1 '(_ . #(each (any any . each-any))))))
1854
+ (if tmp
1855
+ (apply (lambda (args e1 e2)
1856
+ (build-it
1857
+ '()
1858
+ (map (lambda (tmp-680b775fb37a463-c96
1859
+ tmp-680b775fb37a463-c95
1860
+ tmp-680b775fb37a463-c94)
1861
+ (cons tmp-680b775fb37a463-c94
1862
+ (cons tmp-680b775fb37a463-c95 tmp-680b775fb37a463-c96)))
1863
+ e2
1864
+ e1
1865
+ args)))
1866
+ tmp)
1867
+ (let ((tmp ($sc-dispatch tmp-1 '(_ any . #(each (any any . each-any))))))
1868
+ (if (and tmp
1869
+ (apply (lambda (docstring args e1 e2) (string? (syntax->datum docstring)))
1870
+ tmp))
1871
+ (apply (lambda (docstring args e1 e2)
1872
+ (build-it
1873
+ (list (cons 'documentation (syntax->datum docstring)))
1874
+ (map (lambda (tmp-680b775fb37a463-cac
1875
+ tmp-680b775fb37a463-cab
1876
+ tmp-680b775fb37a463-caa)
1877
+ (cons tmp-680b775fb37a463-caa
1878
+ (cons tmp-680b775fb37a463-cab tmp-680b775fb37a463-cac)))
1879
+ e2
1880
+ e1
1881
+ args)))
1882
+ tmp)
1883
+ (syntax-violation 'case-lambda "bad case-lambda" e))))))))
1884
+ (global-extend
1885
+ 'core
1886
+ 'case-lambda*
1887
+ (lambda (e r w s mod)
1888
+ (letrec*
1889
+ ((build-it
1890
+ (lambda (meta clauses)
1891
+ (call-with-values
1892
+ (lambda () (expand-lambda-case e r w s mod lambda*-formals clauses))
1893
+ (lambda (meta* lcase)
1894
+ (build-case-lambda s (append meta meta*) lcase))))))
1895
+ (let* ((tmp-1 e)
1896
+ (tmp ($sc-dispatch tmp-1 '(_ . #(each (any any . each-any))))))
1897
+ (if tmp
1898
+ (apply (lambda (args e1 e2)
1899
+ (build-it
1900
+ '()
1901
+ (map (lambda (tmp-680b775fb37a463-ccc
1902
+ tmp-680b775fb37a463-ccb
1903
+ tmp-680b775fb37a463-cca)
1904
+ (cons tmp-680b775fb37a463-cca
1905
+ (cons tmp-680b775fb37a463-ccb tmp-680b775fb37a463-ccc)))
1906
+ e2
1907
+ e1
1908
+ args)))
1909
+ tmp)
1910
+ (let ((tmp ($sc-dispatch tmp-1 '(_ any . #(each (any any . each-any))))))
1911
+ (if (and tmp
1912
+ (apply (lambda (docstring args e1 e2) (string? (syntax->datum docstring)))
1913
+ tmp))
1914
+ (apply (lambda (docstring args e1 e2)
1915
+ (build-it
1916
+ (list (cons 'documentation (syntax->datum docstring)))
1917
+ (map (lambda (tmp-680b775fb37a463-ce2
1918
+ tmp-680b775fb37a463-ce1
1919
+ tmp-680b775fb37a463-ce0)
1920
+ (cons tmp-680b775fb37a463-ce0
1921
+ (cons tmp-680b775fb37a463-ce1 tmp-680b775fb37a463-ce2)))
1922
+ e2
1923
+ e1
1924
+ args)))
1925
+ tmp)
1926
+ (syntax-violation 'case-lambda "bad case-lambda*" e))))))))
1927
+ (global-extend
1928
+ 'core
1929
+ 'with-ellipsis
1930
+ (lambda (e r w s mod)
1931
+ (let* ((tmp e) (tmp ($sc-dispatch tmp '(_ any any . each-any))))
1932
+ (if (and tmp (apply (lambda (dots e1 e2) (id? dots)) tmp))
1933
+ (apply (lambda (dots e1 e2)
1934
+ (let ((id (if (symbol? dots)
1935
+ '#{ $sc-ellipsis }#
1936
+ (make-syntax-object
1937
+ '#{ $sc-ellipsis }#
1938
+ (syntax-object-wrap dots)
1939
+ (syntax-object-module dots)))))
1940
+ (let ((ids (list id))
1941
+ (labels (list (gen-label)))
1942
+ (bindings (list (cons 'ellipsis (source-wrap dots w s mod)))))
1943
+ (let ((nw (make-binding-wrap ids labels w))
1944
+ (nr (extend-env labels bindings r)))
1945
+ (expand-body (cons e1 e2) (source-wrap e nw s mod) nr nw mod)))))
1946
+ tmp)
1947
+ (syntax-violation
1948
+ 'with-ellipsis
1949
+ "bad syntax"
1950
+ (source-wrap e w s mod))))))
1951
+ (global-extend
1952
+ 'core
1953
+ 'let
1954
+ (letrec*
1955
+ ((expand-let
1956
+ (lambda (e r w s mod constructor ids vals exps)
1957
+ (if (not (valid-bound-ids? ids))
1958
+ (syntax-violation 'let "duplicate bound variable" e)
1959
+ (let ((labels (gen-labels ids)) (new-vars (map gen-var ids)))
1960
+ (let ((nw (make-binding-wrap ids labels w))
1961
+ (nr (extend-var-env labels new-vars r)))
1962
+ (constructor
1963
+ s
1964
+ (map syntax->datum ids)
1965
+ new-vars
1966
+ (map (lambda (x) (expand x r w mod)) vals)
1967
+ (expand-body exps (source-wrap e nw s mod) nr nw mod))))))))
1968
+ (lambda (e r w s mod)
1969
+ (let* ((tmp-1 e)
1970
+ (tmp ($sc-dispatch tmp-1 '(_ #(each (any any)) any . each-any))))
1971
+ (if (and tmp (apply (lambda (id val e1 e2) (and-map id? id)) tmp))
1972
+ (apply (lambda (id val e1 e2)
1973
+ (expand-let e r w s mod build-let id val (cons e1 e2)))
1974
+ tmp)
1975
+ (let ((tmp ($sc-dispatch tmp-1 '(_ any #(each (any any)) any . each-any))))
1976
+ (if (and tmp
1977
+ (apply (lambda (f id val e1 e2) (and (id? f) (and-map id? id))) tmp))
1978
+ (apply (lambda (f id val e1 e2)
1979
+ (expand-let e r w s mod build-named-let (cons f id) val (cons e1 e2)))
1980
+ tmp)
1981
+ (syntax-violation 'let "bad let" (source-wrap e w s mod)))))))))
1982
+ (global-extend
1983
+ 'core
1984
+ 'letrec
1985
+ (lambda (e r w s mod)
1986
+ (let* ((tmp e)
1987
+ (tmp ($sc-dispatch tmp '(_ #(each (any any)) any . each-any))))
1988
+ (if (and tmp (apply (lambda (id val e1 e2) (and-map id? id)) tmp))
1989
+ (apply (lambda (id val e1 e2)
1990
+ (let ((ids id))
1991
+ (if (not (valid-bound-ids? ids))
1992
+ (syntax-violation 'letrec "duplicate bound variable" e)
1993
+ (let ((labels (gen-labels ids)) (new-vars (map gen-var ids)))
1994
+ (let ((w (make-binding-wrap ids labels w))
1995
+ (r (extend-var-env labels new-vars r)))
1996
+ (build-letrec
1997
+ s
1998
+ #f
1999
+ (map syntax->datum ids)
2000
+ new-vars
2001
+ (map (lambda (x) (expand x r w mod)) val)
2002
+ (expand-body (cons e1 e2) (source-wrap e w s mod) r w mod)))))))
2003
+ tmp)
2004
+ (syntax-violation 'letrec "bad letrec" (source-wrap e w s mod))))))
2005
+ (global-extend
2006
+ 'core
2007
+ 'letrec*
2008
+ (lambda (e r w s mod)
2009
+ (let* ((tmp e)
2010
+ (tmp ($sc-dispatch tmp '(_ #(each (any any)) any . each-any))))
2011
+ (if (and tmp (apply (lambda (id val e1 e2) (and-map id? id)) tmp))
2012
+ (apply (lambda (id val e1 e2)
2013
+ (let ((ids id))
2014
+ (if (not (valid-bound-ids? ids))
2015
+ (syntax-violation 'letrec* "duplicate bound variable" e)
2016
+ (let ((labels (gen-labels ids)) (new-vars (map gen-var ids)))
2017
+ (let ((w (make-binding-wrap ids labels w))
2018
+ (r (extend-var-env labels new-vars r)))
2019
+ (build-letrec
2020
+ s
2021
+ #t
2022
+ (map syntax->datum ids)
2023
+ new-vars
2024
+ (map (lambda (x) (expand x r w mod)) val)
2025
+ (expand-body (cons e1 e2) (source-wrap e w s mod) r w mod)))))))
2026
+ tmp)
2027
+ (syntax-violation 'letrec* "bad letrec*" (source-wrap e w s mod))))))
2028
+ (global-extend
2029
+ 'core
2030
+ 'set!
2031
+ (lambda (e r w s mod)
2032
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ any any))))
2033
+ (if (and tmp (apply (lambda (id val) (id? id)) tmp))
2034
+ (apply (lambda (id val)
2035
+ (call-with-values
2036
+ (lambda () (resolve-identifier id w r mod #t))
2037
+ (lambda (type value id-mod)
2038
+ (let ((key type))
2039
+ (cond ((memv key '(lexical))
2040
+ (build-lexical-assignment
2041
+ s
2042
+ (syntax->datum id)
2043
+ value
2044
+ (expand val r w mod)))
2045
+ ((memv key '(global))
2046
+ (build-global-assignment s value (expand val r w mod) id-mod))
2047
+ ((memv key '(macro))
2048
+ (if (procedure-property value 'variable-transformer)
2049
+ (expand (expand-macro value e r w s #f mod) r '(()) mod)
2050
+ (syntax-violation
2051
+ 'set!
2052
+ "not a variable transformer"
2053
+ (wrap e w mod)
2054
+ (wrap id w id-mod))))
2055
+ ((memv key '(displaced-lexical))
2056
+ (syntax-violation 'set! "identifier out of context" (wrap id w mod)))
2057
+ (else (syntax-violation 'set! "bad set!" (source-wrap e w s mod))))))))
2058
+ tmp)
2059
+ (let ((tmp ($sc-dispatch tmp-1 '(_ (any . each-any) any))))
2060
+ (if tmp
2061
+ (apply (lambda (head tail val)
2062
+ (call-with-values
2063
+ (lambda () (syntax-type head r '(()) #f #f mod #t))
2064
+ (lambda (type value ee* ee ww ss modmod)
2065
+ (let ((key type))
2066
+ (if (memv key '(module-ref))
2067
+ (let ((val (expand val r w mod)))
2068
+ (call-with-values
2069
+ (lambda () (value (cons head tail) r w mod))
2070
+ (lambda (e r w s* mod)
2071
+ (let* ((tmp-1 e) (tmp (list tmp-1)))
2072
+ (if (and tmp (apply (lambda (e) (id? e)) tmp))
2073
+ (apply (lambda (e) (build-global-assignment s (syntax->datum e) val mod))
2074
+ tmp)
2075
+ (syntax-violation
2076
+ #f
2077
+ "source expression failed to match any pattern"
2078
+ tmp-1))))))
2079
+ (build-call
2080
+ s
2081
+ (expand
2082
+ (list (make-syntax 'setter '((top)) '(hygiene guile)) head)
2083
+ r
2084
+ w
2085
+ mod)
2086
+ (map (lambda (e) (expand e r w mod)) (append tail (list val)))))))))
2087
+ tmp)
2088
+ (syntax-violation 'set! "bad set!" (source-wrap e w s mod))))))))
2089
+ (global-extend
2090
+ 'module-ref
2091
+ '@
2092
+ (lambda (e r w mod)
2093
+ (let* ((tmp-1 e) (tmp ($sc-dispatch tmp-1 '(_ each-any any))))
2094
+ (if (and tmp
2095
+ (apply (lambda (mod id) (and (and-map id? mod) (id? id))) tmp))
2096
+ (apply (lambda (mod id)
2097
+ (values
2098
+ (syntax->datum id)
2099
+ r
2100
+ '((top))
2101
+ #f
2102
+ (syntax->datum
2103
+ (cons (make-syntax 'public '((top)) '(hygiene guile)) mod))))
2104
+ tmp)
2105
+ (syntax-violation
2106
+ #f
2107
+ "source expression failed to match any pattern"
2108
+ tmp-1)))))
2109
+ (global-extend
2110
+ 'module-ref
2111
+ '@@
2112
+ (lambda (e r w mod)
2113
+ (letrec*
2114
+ ((remodulate
2115
+ (lambda (x mod)
2116
+ (cond ((pair? x) (cons (remodulate (car x) mod) (remodulate (cdr x) mod)))
2117
+ ((syntax-object? x)
2118
+ (make-syntax-object
2119
+ (remodulate (syntax-object-expression x) mod)
2120
+ (syntax-object-wrap x)
2121
+ mod))
2122
+ ((vector? x)
2123
+ (let* ((n (vector-length x)) (v (make-vector n)))
2124
+ (let loop ((i 0))
2125
+ (if (= i n)
2126
+ (begin (if #f #f) v)
2127
+ (begin
2128
+ (vector-set! v i (remodulate (vector-ref x i) mod))
2129
+ (loop (+ i 1)))))))
2130
+ (else x)))))
2131
+ (let* ((tmp e)
2132
+ (tmp-1 ($sc-dispatch
2133
+ tmp
2134
+ (list '_
2135
+ (vector 'free-id (make-syntax 'primitive '((top)) '(hygiene guile)))
2136
+ 'any))))
2137
+ (if (and tmp-1
2138
+ (apply (lambda (id)
2139
+ (and (id? id)
2140
+ (equal?
2141
+ (cdr (if (syntax-object? id) (syntax-object-module id) mod))
2142
+ '(guile))))
2143
+ tmp-1))
2144
+ (apply (lambda (id) (values (syntax->datum id) r '((top)) #f '(primitive)))
2145
+ tmp-1)
2146
+ (let ((tmp-1 ($sc-dispatch tmp '(_ each-any any))))
2147
+ (if (and tmp-1
2148
+ (apply (lambda (mod id) (and (and-map id? mod) (id? id))) tmp-1))
2149
+ (apply (lambda (mod id)
2150
+ (values
2151
+ (syntax->datum id)
2152
+ r
2153
+ '((top))
2154
+ #f
2155
+ (syntax->datum
2156
+ (cons (make-syntax 'private '((top)) '(hygiene guile)) mod))))
2157
+ tmp-1)
2158
+ (let ((tmp-1 ($sc-dispatch
2159
+ tmp
2160
+ (list '_
2161
+ (vector 'free-id (make-syntax '@@ '((top)) '(hygiene guile)))
2162
+ 'each-any
2163
+ 'any))))
2164
+ (if (and tmp-1 (apply (lambda (mod exp) (and-map id? mod)) tmp-1))
2165
+ (apply (lambda (mod exp)
2166
+ (let ((mod (syntax->datum
2167
+ (cons (make-syntax 'private '((top)) '(hygiene guile)) mod))))
2168
+ (values (remodulate exp mod) r w (source-annotation exp) mod)))
2169
+ tmp-1)
2170
+ (syntax-violation
2171
+ #f
2172
+ "source expression failed to match any pattern"
2173
+ tmp))))))))))
2174
+ (global-extend
2175
+ 'core
2176
+ 'if
2177
+ (lambda (e r w s mod)
2178
+ (let* ((tmp e) (tmp-1 ($sc-dispatch tmp '(_ any any))))
2179
+ (if tmp-1
2180
+ (apply (lambda (test then)
2181
+ (build-conditional
2182
+ s
2183
+ (expand test r w mod)
2184
+ (expand then r w mod)
2185
+ (build-void #f)))
2186
+ tmp-1)
2187
+ (let ((tmp-1 ($sc-dispatch tmp '(_ any any any))))
2188
+ (if tmp-1
2189
+ (apply (lambda (test then else)
2190
+ (build-conditional
2191
+ s
2192
+ (expand test r w mod)
2193
+ (expand then r w mod)
2194
+ (expand else r w mod)))
2195
+ tmp-1)
2196
+ (syntax-violation
2197
+ #f
2198
+ "source expression failed to match any pattern"
2199
+ tmp)))))))
2200
+ (global-extend 'begin 'begin '())
2201
+ (global-extend 'define 'define '())
2202
+ (global-extend 'define-syntax 'define-syntax '())
2203
+ (global-extend 'define-syntax-parameter 'define-syntax-parameter '())
2204
+ (global-extend 'eval-when 'eval-when '())
2205
+ (global-extend
2206
+ 'core
2207
+ 'syntax-case
2208
+ (letrec*
2209
+ ((convert-pattern
2210
+ (lambda (pattern keys ellipsis?)
2211
+ (letrec*
2212
+ ((cvt* (lambda (p* n ids)
2213
+ (let* ((tmp p*) (tmp ($sc-dispatch tmp '(any . any))))
2214
+ (if tmp
2215
+ (apply (lambda (x y)
2216
+ (call-with-values
2217
+ (lambda () (cvt* y n ids))
2218
+ (lambda (y ids)
2219
+ (call-with-values
2220
+ (lambda () (cvt x n ids))
2221
+ (lambda (x ids) (values (cons x y) ids))))))
2222
+ tmp)
2223
+ (cvt p* n ids)))))
2224
+ (v-reverse
2225
+ (lambda (x)
2226
+ (let loop ((r '()) (x x))
2227
+ (if (not (pair? x)) (values r x) (loop (cons (car x) r) (cdr x))))))
2228
+ (cvt (lambda (p n ids)
2229
+ (if (id? p)
2230
+ (cond ((bound-id-member? p keys) (values (vector 'free-id p) ids))
2231
+ ((free-id=? p (make-syntax '_ '((top)) '(hygiene guile)))
2232
+ (values '_ ids))
2233
+ (else (values 'any (cons (cons p n) ids))))
2234
+ (let* ((tmp p) (tmp-1 ($sc-dispatch tmp '(any any))))
2235
+ (if (and tmp-1 (apply (lambda (x dots) (ellipsis? dots)) tmp-1))
2236
+ (apply (lambda (x dots)
2237
+ (call-with-values
2238
+ (lambda () (cvt x (+ n 1) ids))
2239
+ (lambda (p ids)
2240
+ (values (if (eq? p 'any) 'each-any (vector 'each p)) ids))))
2241
+ tmp-1)
2242
+ (let ((tmp-1 ($sc-dispatch tmp '(any any . any))))
2243
+ (if (and tmp-1 (apply (lambda (x dots ys) (ellipsis? dots)) tmp-1))
2244
+ (apply (lambda (x dots ys)
2245
+ (call-with-values
2246
+ (lambda () (cvt* ys n ids))
2247
+ (lambda (ys ids)
2248
+ (call-with-values
2249
+ (lambda () (cvt x (+ n 1) ids))
2250
+ (lambda (x ids)
2251
+ (call-with-values
2252
+ (lambda () (v-reverse ys))
2253
+ (lambda (ys e) (values (vector 'each+ x ys e) ids))))))))
2254
+ tmp-1)
2255
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
2256
+ (if tmp-1
2257
+ (apply (lambda (x y)
2258
+ (call-with-values
2259
+ (lambda () (cvt y n ids))
2260
+ (lambda (y ids)
2261
+ (call-with-values
2262
+ (lambda () (cvt x n ids))
2263
+ (lambda (x ids) (values (cons x y) ids))))))
2264
+ tmp-1)
2265
+ (let ((tmp-1 ($sc-dispatch tmp '())))
2266
+ (if tmp-1
2267
+ (apply (lambda () (values '() ids)) tmp-1)
2268
+ (let ((tmp-1 ($sc-dispatch tmp '#(vector each-any))))
2269
+ (if tmp-1
2270
+ (apply (lambda (x)
2271
+ (call-with-values
2272
+ (lambda () (cvt x n ids))
2273
+ (lambda (p ids) (values (vector 'vector p) ids))))
2274
+ tmp-1)
2275
+ (let ((x tmp)) (values (vector 'atom (strip p '(()))) ids))))))))))))))))
2276
+ (cvt pattern 0 '()))))
2277
+ (build-dispatch-call
2278
+ (lambda (pvars exp y r mod)
2279
+ (let ((ids (map car pvars)) (levels (map cdr pvars)))
2280
+ (let ((labels (gen-labels ids)) (new-vars (map gen-var ids)))
2281
+ (build-primcall
2282
+ #f
2283
+ 'apply
2284
+ (list (build-simple-lambda
2285
+ #f
2286
+ (map syntax->datum ids)
2287
+ #f
2288
+ new-vars
2289
+ '()
2290
+ (expand
2291
+ exp
2292
+ (extend-env
2293
+ labels
2294
+ (map (lambda (var level) (cons 'syntax (cons var level)))
2295
+ new-vars
2296
+ (map cdr pvars))
2297
+ r)
2298
+ (make-binding-wrap ids labels '(()))
2299
+ mod))
2300
+ y))))))
2301
+ (gen-clause
2302
+ (lambda (x keys clauses r pat fender exp mod)
2303
+ (call-with-values
2304
+ (lambda ()
2305
+ (convert-pattern pat keys (lambda (e) (ellipsis? e r mod))))
2306
+ (lambda (p pvars)
2307
+ (cond ((not (and-map (lambda (x) (not (ellipsis? (car x) r mod))) pvars))
2308
+ (syntax-violation 'syntax-case "misplaced ellipsis" pat))
2309
+ ((not (distinct-bound-ids? (map car pvars)))
2310
+ (syntax-violation 'syntax-case "duplicate pattern variable" pat))
2311
+ (else
2312
+ (let ((y (gen-var 'tmp)))
2313
+ (build-call
2314
+ #f
2315
+ (build-simple-lambda
2316
+ #f
2317
+ (list 'tmp)
2318
+ #f
2319
+ (list y)
2320
+ '()
2321
+ (let ((y (build-lexical-reference 'value #f 'tmp y)))
2322
+ (build-conditional
2323
+ #f
2324
+ (let* ((tmp fender) (tmp ($sc-dispatch tmp '#(atom #t))))
2325
+ (if tmp
2326
+ (apply (lambda () y) tmp)
2327
+ (build-conditional
2328
+ #f
2329
+ y
2330
+ (build-dispatch-call pvars fender y r mod)
2331
+ (build-data #f #f))))
2332
+ (build-dispatch-call pvars exp y r mod)
2333
+ (gen-syntax-case x keys clauses r mod))))
2334
+ (list (if (eq? p 'any)
2335
+ (build-primcall #f 'list (list x))
2336
+ (build-primcall #f '$sc-dispatch (list x (build-data #f p)))))))))))))
2337
+ (gen-syntax-case
2338
+ (lambda (x keys clauses r mod)
2339
+ (if (null? clauses)
2340
+ (build-primcall
2341
+ #f
2342
+ 'syntax-violation
2343
+ (list (build-data #f #f)
2344
+ (build-data #f "source expression failed to match any pattern")
2345
+ x))
2346
+ (let* ((tmp-1 (car clauses)) (tmp ($sc-dispatch tmp-1 '(any any))))
2347
+ (if tmp
2348
+ (apply (lambda (pat exp)
2349
+ (if (and (id? pat)
2350
+ (and-map
2351
+ (lambda (x) (not (free-id=? pat x)))
2352
+ (cons (make-syntax '... '((top)) '(hygiene guile)) keys)))
2353
+ (if (free-id=? pat (make-syntax '_ '((top)) '(hygiene guile)))
2354
+ (expand exp r '(()) mod)
2355
+ (let ((labels (list (gen-label))) (var (gen-var pat)))
2356
+ (build-call
2357
+ #f
2358
+ (build-simple-lambda
2359
+ #f
2360
+ (list (syntax->datum pat))
2361
+ #f
2362
+ (list var)
2363
+ '()
2364
+ (expand
2365
+ exp
2366
+ (extend-env labels (list (cons 'syntax (cons var 0))) r)
2367
+ (make-binding-wrap (list pat) labels '(()))
2368
+ mod))
2369
+ (list x))))
2370
+ (gen-clause x keys (cdr clauses) r pat #t exp mod)))
2371
+ tmp)
2372
+ (let ((tmp ($sc-dispatch tmp-1 '(any any any))))
2373
+ (if tmp
2374
+ (apply (lambda (pat fender exp)
2375
+ (gen-clause x keys (cdr clauses) r pat fender exp mod))
2376
+ tmp)
2377
+ (syntax-violation 'syntax-case "invalid clause" (car clauses))))))))))
2378
+ (lambda (e r w s mod)
2379
+ (let* ((e (source-wrap e w s mod))
2380
+ (tmp-1 e)
2381
+ (tmp ($sc-dispatch tmp-1 '(_ any each-any . each-any))))
2382
+ (if tmp
2383
+ (apply (lambda (val key m)
2384
+ (if (and-map (lambda (x) (and (id? x) (not (ellipsis? x r mod)))) key)
2385
+ (let ((x (gen-var 'tmp)))
2386
+ (build-call
2387
+ s
2388
+ (build-simple-lambda
2389
+ #f
2390
+ (list 'tmp)
2391
+ #f
2392
+ (list x)
2393
+ '()
2394
+ (gen-syntax-case
2395
+ (build-lexical-reference 'value #f 'tmp x)
2396
+ key
2397
+ m
2398
+ r
2399
+ mod))
2400
+ (list (expand val r '(()) mod))))
2401
+ (syntax-violation 'syntax-case "invalid literals list" e)))
2402
+ tmp)
2403
+ (syntax-violation
2404
+ #f
2405
+ "source expression failed to match any pattern"
2406
+ tmp-1))))))
2407
+ (set! macroexpand
2408
+ (lambda* (x #:optional (m 'e) (esew '(eval)))
2409
+ (expand-top-sequence
2410
+ (list x)
2411
+ '()
2412
+ '((top))
2413
+ #f
2414
+ m
2415
+ esew
2416
+ (cons 'hygiene (module-name (current-module))))))
2417
+ (set! identifier? (lambda (x) (nonsymbol-id? x)))
2418
+ (set! datum->syntax
2419
+ (lambda (id datum)
2420
+ (make-syntax-object
2421
+ datum
2422
+ (syntax-object-wrap id)
2423
+ (syntax-object-module id))))
2424
+ (set! syntax->datum (lambda (x) (strip x '(()))))
2425
+ (set! syntax-source (lambda (x) (source-annotation x)))
2426
+ (set! generate-temporaries
2427
+ (lambda (ls)
2428
+ (let ((x ls))
2429
+ (if (not (list? x))
2430
+ (syntax-violation 'generate-temporaries "invalid argument" x)))
2431
+ (let ((mod (cons 'hygiene (module-name (current-module)))))
2432
+ (map (lambda (x) (wrap (module-gensym "t") '((top)) mod)) ls))))
2433
+ (set! free-identifier=?
2434
+ (lambda (x y)
2435
+ (let ((x x))
2436
+ (if (not (nonsymbol-id? x))
2437
+ (syntax-violation 'free-identifier=? "invalid argument" x)))
2438
+ (let ((x y))
2439
+ (if (not (nonsymbol-id? x))
2440
+ (syntax-violation 'free-identifier=? "invalid argument" x)))
2441
+ (free-id=? x y)))
2442
+ (set! bound-identifier=?
2443
+ (lambda (x y)
2444
+ (let ((x x))
2445
+ (if (not (nonsymbol-id? x))
2446
+ (syntax-violation 'bound-identifier=? "invalid argument" x)))
2447
+ (let ((x y))
2448
+ (if (not (nonsymbol-id? x))
2449
+ (syntax-violation 'bound-identifier=? "invalid argument" x)))
2450
+ (bound-id=? x y)))
2451
+ (set! syntax-violation
2452
+ (lambda* (who message form #:optional (subform #f))
2453
+ (let ((x who))
2454
+ (if (not (let ((x x)) (or (not x) (string? x) (symbol? x))))
2455
+ (syntax-violation 'syntax-violation "invalid argument" x)))
2456
+ (let ((x message))
2457
+ (if (not (string? x))
2458
+ (syntax-violation 'syntax-violation "invalid argument" x)))
2459
+ (throw 'syntax-error
2460
+ who
2461
+ message
2462
+ (or (source-annotation subform) (source-annotation form))
2463
+ (strip form '(()))
2464
+ (and subform (strip subform '(()))))))
2465
+ (letrec*
2466
+ ((%syntax-module
2467
+ (lambda (id)
2468
+ (let ((x id))
2469
+ (if (not (nonsymbol-id? x))
2470
+ (syntax-violation 'syntax-module "invalid argument" x)))
2471
+ (let ((mod (syntax-object-module id)))
2472
+ (and (not (equal? mod '(primitive))) (cdr mod)))))
2473
+ (syntax-local-binding
2474
+ (lambda* (id
2475
+ #:key
2476
+ (resolve-syntax-parameters? #t #:resolve-syntax-parameters?))
2477
+ (let ((x id))
2478
+ (if (not (nonsymbol-id? x))
2479
+ (syntax-violation 'syntax-local-binding "invalid argument" x)))
2480
+ (with-transformer-environment
2481
+ (lambda (e r w s rib mod)
2482
+ (letrec*
2483
+ ((strip-anti-mark
2484
+ (lambda (w)
2485
+ (let ((ms (car w)) (s (cdr w)))
2486
+ (if (and (pair? ms) (eq? (car ms) #f))
2487
+ (cons (cdr ms) (if rib (cons rib (cdr s)) (cdr s)))
2488
+ (cons ms (if rib (cons rib s) s)))))))
2489
+ (call-with-values
2490
+ (lambda ()
2491
+ (resolve-identifier
2492
+ (syntax-object-expression id)
2493
+ (strip-anti-mark (syntax-object-wrap id))
2494
+ r
2495
+ (syntax-object-module id)
2496
+ resolve-syntax-parameters?))
2497
+ (lambda (type value mod)
2498
+ (let ((key type))
2499
+ (cond ((memv key '(lexical)) (values 'lexical value))
2500
+ ((memv key '(macro)) (values 'macro value))
2501
+ ((memv key '(syntax-parameter)) (values 'syntax-parameter value))
2502
+ ((memv key '(syntax)) (values 'pattern-variable value))
2503
+ ((memv key '(displaced-lexical)) (values 'displaced-lexical #f))
2504
+ ((memv key '(global))
2505
+ (if (equal? mod '(primitive))
2506
+ (values 'primitive value)
2507
+ (values 'global (cons value (cdr mod)))))
2508
+ ((memv key '(ellipsis))
2509
+ (values
2510
+ 'ellipsis
2511
+ (make-syntax-object
2512
+ (syntax-object-expression value)
2513
+ (anti-mark (syntax-object-wrap value))
2514
+ (syntax-object-module value))))
2515
+ (else (values 'other #f)))))))))))
2516
+ (syntax-locally-bound-identifiers
2517
+ (lambda (id)
2518
+ (let ((x id))
2519
+ (if (not (nonsymbol-id? x))
2520
+ (syntax-violation
2521
+ 'syntax-locally-bound-identifiers
2522
+ "invalid argument"
2523
+ x)))
2524
+ (locally-bound-identifiers
2525
+ (syntax-object-wrap id)
2526
+ (syntax-object-module id)))))
2527
+ (define! '%syntax-module %syntax-module)
2528
+ (define! 'syntax-local-binding syntax-local-binding)
2529
+ (define!
2530
+ 'syntax-locally-bound-identifiers
2531
+ syntax-locally-bound-identifiers))
2532
+ (letrec*
2533
+ ((match-each
2534
+ (lambda (e p w mod)
2535
+ (cond ((pair? e)
2536
+ (let ((first (match (car e) p w '() mod)))
2537
+ (and first
2538
+ (let ((rest (match-each (cdr e) p w mod)))
2539
+ (and rest (cons first rest))))))
2540
+ ((null? e) '())
2541
+ ((syntax-object? e)
2542
+ (match-each
2543
+ (syntax-object-expression e)
2544
+ p
2545
+ (join-wraps w (syntax-object-wrap e))
2546
+ (syntax-object-module e)))
2547
+ (else #f))))
2548
+ (match-each+
2549
+ (lambda (e x-pat y-pat z-pat w r mod)
2550
+ (let f ((e e) (w w))
2551
+ (cond ((pair? e)
2552
+ (call-with-values
2553
+ (lambda () (f (cdr e) w))
2554
+ (lambda (xr* y-pat r)
2555
+ (if r
2556
+ (if (null? y-pat)
2557
+ (let ((xr (match (car e) x-pat w '() mod)))
2558
+ (if xr (values (cons xr xr*) y-pat r) (values #f #f #f)))
2559
+ (values '() (cdr y-pat) (match (car e) (car y-pat) w r mod)))
2560
+ (values #f #f #f)))))
2561
+ ((syntax-object? e)
2562
+ (f (syntax-object-expression e)
2563
+ (join-wraps w (syntax-object-wrap e))))
2564
+ (else (values '() y-pat (match e z-pat w r mod)))))))
2565
+ (match-each-any
2566
+ (lambda (e w mod)
2567
+ (cond ((pair? e)
2568
+ (let ((l (match-each-any (cdr e) w mod)))
2569
+ (and l (cons (wrap (car e) w mod) l))))
2570
+ ((null? e) '())
2571
+ ((syntax-object? e)
2572
+ (match-each-any
2573
+ (syntax-object-expression e)
2574
+ (join-wraps w (syntax-object-wrap e))
2575
+ mod))
2576
+ (else #f))))
2577
+ (match-empty
2578
+ (lambda (p r)
2579
+ (cond ((null? p) r)
2580
+ ((eq? p '_) r)
2581
+ ((eq? p 'any) (cons '() r))
2582
+ ((pair? p) (match-empty (car p) (match-empty (cdr p) r)))
2583
+ ((eq? p 'each-any) (cons '() r))
2584
+ (else
2585
+ (let ((key (vector-ref p 0)))
2586
+ (cond ((memv key '(each)) (match-empty (vector-ref p 1) r))
2587
+ ((memv key '(each+))
2588
+ (match-empty
2589
+ (vector-ref p 1)
2590
+ (match-empty
2591
+ (reverse (vector-ref p 2))
2592
+ (match-empty (vector-ref p 3) r))))
2593
+ ((memv key '(free-id atom)) r)
2594
+ ((memv key '(vector)) (match-empty (vector-ref p 1) r))))))))
2595
+ (combine
2596
+ (lambda (r* r)
2597
+ (if (null? (car r*)) r (cons (map car r*) (combine (map cdr r*) r)))))
2598
+ (match*
2599
+ (lambda (e p w r mod)
2600
+ (cond ((null? p) (and (null? e) r))
2601
+ ((pair? p)
2602
+ (and (pair? e)
2603
+ (match (car e) (car p) w (match (cdr e) (cdr p) w r mod) mod)))
2604
+ ((eq? p 'each-any)
2605
+ (let ((l (match-each-any e w mod))) (and l (cons l r))))
2606
+ (else
2607
+ (let ((key (vector-ref p 0)))
2608
+ (cond ((memv key '(each))
2609
+ (if (null? e)
2610
+ (match-empty (vector-ref p 1) r)
2611
+ (let ((l (match-each e (vector-ref p 1) w mod)))
2612
+ (and l
2613
+ (let collect ((l l))
2614
+ (if (null? (car l)) r (cons (map car l) (collect (map cdr l)))))))))
2615
+ ((memv key '(each+))
2616
+ (call-with-values
2617
+ (lambda ()
2618
+ (match-each+
2619
+ e
2620
+ (vector-ref p 1)
2621
+ (vector-ref p 2)
2622
+ (vector-ref p 3)
2623
+ w
2624
+ r
2625
+ mod))
2626
+ (lambda (xr* y-pat r)
2627
+ (and r
2628
+ (null? y-pat)
2629
+ (if (null? xr*) (match-empty (vector-ref p 1) r) (combine xr* r))))))
2630
+ ((memv key '(free-id))
2631
+ (and (id? e) (free-id=? (wrap e w mod) (vector-ref p 1)) r))
2632
+ ((memv key '(atom)) (and (equal? (vector-ref p 1) (strip e w)) r))
2633
+ ((memv key '(vector))
2634
+ (and (vector? e) (match (vector->list e) (vector-ref p 1) w r mod)))))))))
2635
+ (match (lambda (e p w r mod)
2636
+ (cond ((not r) #f)
2637
+ ((eq? p '_) r)
2638
+ ((eq? p 'any) (cons (wrap e w mod) r))
2639
+ ((syntax-object? e)
2640
+ (match*
2641
+ (syntax-object-expression e)
2642
+ p
2643
+ (join-wraps w (syntax-object-wrap e))
2644
+ r
2645
+ (syntax-object-module e)))
2646
+ (else (match* e p w r mod))))))
2647
+ (set! $sc-dispatch
2648
+ (lambda (e p)
2649
+ (cond ((eq? p 'any) (list e))
2650
+ ((eq? p '_) '())
2651
+ ((syntax-object? e)
2652
+ (match*
2653
+ (syntax-object-expression e)
2654
+ p
2655
+ (syntax-object-wrap e)
2656
+ '()
2657
+ (syntax-object-module e)))
2658
+ (else (match* e p '(()) '() #f))))))))
2659
+
2660
+ (define with-syntax
2661
+ (let ((make-syntax make-syntax))
2662
+ (make-syntax-transformer
2663
+ 'with-syntax
2664
+ 'macro
2665
+ (lambda (x)
2666
+ (let ((tmp x))
2667
+ (let ((tmp-1 ($sc-dispatch tmp '(_ () any . each-any))))
2668
+ (if tmp-1
2669
+ (apply (lambda (e1 e2)
2670
+ (cons (make-syntax 'let '((top)) '(hygiene guile))
2671
+ (cons '() (cons e1 e2))))
2672
+ tmp-1)
2673
+ (let ((tmp-1 ($sc-dispatch tmp '(_ ((any any)) any . each-any))))
2674
+ (if tmp-1
2675
+ (apply (lambda (out in e1 e2)
2676
+ (list (make-syntax 'syntax-case '((top)) '(hygiene guile))
2677
+ in
2678
+ '()
2679
+ (list out
2680
+ (cons (make-syntax 'let '((top)) '(hygiene guile))
2681
+ (cons '() (cons e1 e2))))))
2682
+ tmp-1)
2683
+ (let ((tmp-1 ($sc-dispatch tmp '(_ #(each (any any)) any . each-any))))
2684
+ (if tmp-1
2685
+ (apply (lambda (out in e1 e2)
2686
+ (list (make-syntax 'syntax-case '((top)) '(hygiene guile))
2687
+ (cons (make-syntax 'list '((top)) '(hygiene guile)) in)
2688
+ '()
2689
+ (list out
2690
+ (cons (make-syntax 'let '((top)) '(hygiene guile))
2691
+ (cons '() (cons e1 e2))))))
2692
+ tmp-1)
2693
+ (syntax-violation
2694
+ #f
2695
+ "source expression failed to match any pattern"
2696
+ tmp))))))))))))
2697
+
2698
+ (define syntax-error
2699
+ (let ((make-syntax make-syntax))
2700
+ (make-syntax-transformer
2701
+ 'syntax-error
2702
+ 'macro
2703
+ (lambda (x)
2704
+ (let ((tmp-1 x))
2705
+ (let ((tmp ($sc-dispatch tmp-1 '(_ (any . any) any . each-any))))
2706
+ (if (if tmp
2707
+ (apply (lambda (keyword operands message arg)
2708
+ (string? (syntax->datum message)))
2709
+ tmp)
2710
+ #f)
2711
+ (apply (lambda (keyword operands message arg)
2712
+ (syntax-violation
2713
+ (syntax->datum keyword)
2714
+ (string-join
2715
+ (cons (syntax->datum message)
2716
+ (map (lambda (x) (object->string (syntax->datum x))) arg)))
2717
+ (if (syntax->datum keyword) (cons keyword operands) #f)))
2718
+ tmp)
2719
+ (let ((tmp ($sc-dispatch tmp-1 '(_ any . each-any))))
2720
+ (if (if tmp
2721
+ (apply (lambda (message arg) (string? (syntax->datum message))) tmp)
2722
+ #f)
2723
+ (apply (lambda (message arg)
2724
+ (cons (make-syntax
2725
+ 'syntax-error
2726
+ (list '(top)
2727
+ (vector
2728
+ 'ribcage
2729
+ '#(syntax-error)
2730
+ '#((top))
2731
+ (vector
2732
+ (cons '(hygiene guile)
2733
+ (make-syntax 'syntax-error '((top)) '(hygiene guile))))))
2734
+ '(hygiene guile))
2735
+ (cons '(#f) (cons message arg))))
2736
+ tmp)
2737
+ (syntax-violation
2738
+ #f
2739
+ "source expression failed to match any pattern"
2740
+ tmp-1))))))))))
2741
+
2742
+ (define syntax-rules
2743
+ (let ((make-syntax make-syntax))
2744
+ (make-syntax-transformer
2745
+ 'syntax-rules
2746
+ 'macro
2747
+ (lambda (xx)
2748
+ (letrec*
2749
+ ((expand-clause
2750
+ (lambda (clause)
2751
+ (let ((tmp-1 clause))
2752
+ (let ((tmp ($sc-dispatch
2753
+ tmp-1
2754
+ (list '(any . any)
2755
+ (cons (vector
2756
+ 'free-id
2757
+ (make-syntax 'syntax-error '((top)) '(hygiene guile)))
2758
+ '(any . each-any))))))
2759
+ (if (if tmp
2760
+ (apply (lambda (keyword pattern message arg)
2761
+ (string? (syntax->datum message)))
2762
+ tmp)
2763
+ #f)
2764
+ (apply (lambda (keyword pattern message arg)
2765
+ (list (cons (make-syntax 'dummy '((top)) '(hygiene guile)) pattern)
2766
+ (list (make-syntax 'syntax '((top)) '(hygiene guile))
2767
+ (cons (make-syntax 'syntax-error '((top)) '(hygiene guile))
2768
+ (cons (cons (make-syntax 'dummy '((top)) '(hygiene guile)) pattern)
2769
+ (cons message arg))))))
2770
+ tmp)
2771
+ (let ((tmp ($sc-dispatch tmp-1 '((any . any) any))))
2772
+ (if tmp
2773
+ (apply (lambda (keyword pattern template)
2774
+ (list (cons (make-syntax 'dummy '((top)) '(hygiene guile)) pattern)
2775
+ (list (make-syntax 'syntax '((top)) '(hygiene guile)) template)))
2776
+ tmp)
2777
+ (syntax-violation
2778
+ #f
2779
+ "source expression failed to match any pattern"
2780
+ tmp-1))))))))
2781
+ (expand-syntax-rules
2782
+ (lambda (dots keys docstrings clauses)
2783
+ (let ((tmp-1 (list keys docstrings clauses (map expand-clause clauses))))
2784
+ (let ((tmp ($sc-dispatch
2785
+ tmp-1
2786
+ '(each-any each-any #(each ((any . any) any)) each-any))))
2787
+ (if tmp
2788
+ (apply (lambda (k docstring keyword pattern template clause)
2789
+ (let ((tmp (cons (make-syntax 'lambda '((top)) '(hygiene guile))
2790
+ (cons (list (make-syntax 'x '((top)) '(hygiene guile)))
2791
+ (append
2792
+ docstring
2793
+ (list (vector
2794
+ (cons (make-syntax 'macro-type '((top)) '(hygiene guile))
2795
+ (make-syntax
2796
+ 'syntax-rules
2797
+ (list '(top)
2798
+ (vector
2799
+ 'ribcage
2800
+ '#(syntax-rules)
2801
+ '#((top))
2802
+ (vector
2803
+ (cons '(hygiene guile)
2804
+ (make-syntax
2805
+ 'syntax-rules
2806
+ '((top))
2807
+ '(hygiene guile))))))
2808
+ '(hygiene guile)))
2809
+ (cons (make-syntax 'patterns '((top)) '(hygiene guile))
2810
+ pattern))
2811
+ (cons (make-syntax 'syntax-case '((top)) '(hygiene guile))
2812
+ (cons (make-syntax 'x '((top)) '(hygiene guile))
2813
+ (cons k clause)))))))))
2814
+ (let ((form tmp))
2815
+ (if dots
2816
+ (let ((tmp dots))
2817
+ (let ((dots tmp))
2818
+ (list (make-syntax 'with-ellipsis '((top)) '(hygiene guile))
2819
+ dots
2820
+ form)))
2821
+ form))))
2822
+ tmp)
2823
+ (syntax-violation
2824
+ #f
2825
+ "source expression failed to match any pattern"
2826
+ tmp-1)))))))
2827
+ (let ((tmp xx))
2828
+ (let ((tmp-1 ($sc-dispatch tmp '(_ each-any . #(each ((any . any) any))))))
2829
+ (if tmp-1
2830
+ (apply (lambda (k keyword pattern template)
2831
+ (expand-syntax-rules
2832
+ #f
2833
+ k
2834
+ '()
2835
+ (map (lambda (tmp-680b775fb37a463-2 tmp-680b775fb37a463-1 tmp-680b775fb37a463)
2836
+ (list (cons tmp-680b775fb37a463 tmp-680b775fb37a463-1)
2837
+ tmp-680b775fb37a463-2))
2838
+ template
2839
+ pattern
2840
+ keyword)))
2841
+ tmp-1)
2842
+ (let ((tmp-1 ($sc-dispatch tmp '(_ each-any any . #(each ((any . any) any))))))
2843
+ (if (if tmp-1
2844
+ (apply (lambda (k docstring keyword pattern template)
2845
+ (string? (syntax->datum docstring)))
2846
+ tmp-1)
2847
+ #f)
2848
+ (apply (lambda (k docstring keyword pattern template)
2849
+ (expand-syntax-rules
2850
+ #f
2851
+ k
2852
+ (list docstring)
2853
+ (map (lambda (tmp-680b775fb37a463
2854
+ tmp-680b775fb37a463-114f
2855
+ tmp-680b775fb37a463-114e)
2856
+ (list (cons tmp-680b775fb37a463-114e tmp-680b775fb37a463-114f)
2857
+ tmp-680b775fb37a463))
2858
+ template
2859
+ pattern
2860
+ keyword)))
2861
+ tmp-1)
2862
+ (let ((tmp-1 ($sc-dispatch tmp '(_ any each-any . #(each ((any . any) any))))))
2863
+ (if (if tmp-1
2864
+ (apply (lambda (dots k keyword pattern template) (identifier? dots))
2865
+ tmp-1)
2866
+ #f)
2867
+ (apply (lambda (dots k keyword pattern template)
2868
+ (expand-syntax-rules
2869
+ dots
2870
+ k
2871
+ '()
2872
+ (map (lambda (tmp-680b775fb37a463-2 tmp-680b775fb37a463-1 tmp-680b775fb37a463)
2873
+ (list (cons tmp-680b775fb37a463 tmp-680b775fb37a463-1)
2874
+ tmp-680b775fb37a463-2))
2875
+ template
2876
+ pattern
2877
+ keyword)))
2878
+ tmp-1)
2879
+ (let ((tmp-1 ($sc-dispatch tmp '(_ any each-any any . #(each ((any . any) any))))))
2880
+ (if (if tmp-1
2881
+ (apply (lambda (dots k docstring keyword pattern template)
2882
+ (if (identifier? dots) (string? (syntax->datum docstring)) #f))
2883
+ tmp-1)
2884
+ #f)
2885
+ (apply (lambda (dots k docstring keyword pattern template)
2886
+ (expand-syntax-rules
2887
+ dots
2888
+ k
2889
+ (list docstring)
2890
+ (map (lambda (tmp-680b775fb37a463-2 tmp-680b775fb37a463-1 tmp-680b775fb37a463)
2891
+ (list (cons tmp-680b775fb37a463 tmp-680b775fb37a463-1)
2892
+ tmp-680b775fb37a463-2))
2893
+ template
2894
+ pattern
2895
+ keyword)))
2896
+ tmp-1)
2897
+ (syntax-violation
2898
+ #f
2899
+ "source expression failed to match any pattern"
2900
+ tmp)))))))))))))))
2901
+
2902
+ (define define-syntax-rule
2903
+ (let ((make-syntax make-syntax))
2904
+ (make-syntax-transformer
2905
+ 'define-syntax-rule
2906
+ 'macro
2907
+ (lambda (x)
2908
+ (let ((tmp-1 x))
2909
+ (let ((tmp ($sc-dispatch tmp-1 '(_ (any . any) any))))
2910
+ (if tmp
2911
+ (apply (lambda (name pattern template)
2912
+ (list (make-syntax 'define-syntax '((top)) '(hygiene guile))
2913
+ name
2914
+ (list (make-syntax 'syntax-rules '((top)) '(hygiene guile))
2915
+ '()
2916
+ (list (cons (make-syntax '_ '((top)) '(hygiene guile)) pattern)
2917
+ template))))
2918
+ tmp)
2919
+ (let ((tmp ($sc-dispatch tmp-1 '(_ (any . any) any any))))
2920
+ (if (if tmp
2921
+ (apply (lambda (name pattern docstring template)
2922
+ (string? (syntax->datum docstring)))
2923
+ tmp)
2924
+ #f)
2925
+ (apply (lambda (name pattern docstring template)
2926
+ (list (make-syntax 'define-syntax '((top)) '(hygiene guile))
2927
+ name
2928
+ (list (make-syntax 'syntax-rules '((top)) '(hygiene guile))
2929
+ '()
2930
+ docstring
2931
+ (list (cons (make-syntax '_ '((top)) '(hygiene guile)) pattern)
2932
+ template))))
2933
+ tmp)
2934
+ (syntax-violation
2935
+ #f
2936
+ "source expression failed to match any pattern"
2937
+ tmp-1))))))))))
2938
+
2939
+ (define let*
2940
+ (let ((make-syntax make-syntax))
2941
+ (make-syntax-transformer
2942
+ 'let*
2943
+ 'macro
2944
+ (lambda (x)
2945
+ (let ((tmp-1 x))
2946
+ (let ((tmp ($sc-dispatch tmp-1 '(any #(each (any any)) any . each-any))))
2947
+ (if (if tmp
2948
+ (apply (lambda (let* x v e1 e2) (and-map identifier? x)) tmp)
2949
+ #f)
2950
+ (apply (lambda (let* x v e1 e2)
2951
+ (let f ((bindings (map list x v)))
2952
+ (if (null? bindings)
2953
+ (cons (make-syntax 'let '((top)) '(hygiene guile))
2954
+ (cons '() (cons e1 e2)))
2955
+ (let ((tmp-1 (list (f (cdr bindings)) (car bindings))))
2956
+ (let ((tmp ($sc-dispatch tmp-1 '(any any))))
2957
+ (if tmp
2958
+ (apply (lambda (body binding)
2959
+ (list (make-syntax 'let '((top)) '(hygiene guile))
2960
+ (list binding)
2961
+ body))
2962
+ tmp)
2963
+ (syntax-violation
2964
+ #f
2965
+ "source expression failed to match any pattern"
2966
+ tmp-1)))))))
2967
+ tmp)
2968
+ (syntax-violation
2969
+ #f
2970
+ "source expression failed to match any pattern"
2971
+ tmp-1))))))))
2972
+
2973
+ (define quasiquote
2974
+ (let ((make-syntax make-syntax))
2975
+ (make-syntax-transformer
2976
+ 'quasiquote
2977
+ 'macro
2978
+ (letrec*
2979
+ ((quasi (lambda (p lev)
2980
+ (let ((tmp p))
2981
+ (let ((tmp-1 ($sc-dispatch
2982
+ tmp
2983
+ (list (vector 'free-id (make-syntax 'unquote '((top)) '(hygiene guile)))
2984
+ 'any))))
2985
+ (if tmp-1
2986
+ (apply (lambda (p)
2987
+ (if (= lev 0)
2988
+ (list "value" p)
2989
+ (quasicons
2990
+ (list "quote" (make-syntax 'unquote '((top)) '(hygiene guile)))
2991
+ (quasi (list p) (- lev 1)))))
2992
+ tmp-1)
2993
+ (let ((tmp-1 ($sc-dispatch
2994
+ tmp
2995
+ (list (vector
2996
+ 'free-id
2997
+ (make-syntax
2998
+ 'quasiquote
2999
+ (list '(top)
3000
+ (vector
3001
+ 'ribcage
3002
+ '#(quasiquote)
3003
+ '#((top))
3004
+ (vector
3005
+ (cons '(hygiene guile)
3006
+ (make-syntax 'quasiquote '((top)) '(hygiene guile))))))
3007
+ '(hygiene guile)))
3008
+ 'any))))
3009
+ (if tmp-1
3010
+ (apply (lambda (p)
3011
+ (quasicons
3012
+ (list "quote"
3013
+ (make-syntax
3014
+ 'quasiquote
3015
+ (list '(top)
3016
+ (vector
3017
+ 'ribcage
3018
+ '#(quasiquote)
3019
+ '#((top))
3020
+ (vector
3021
+ (cons '(hygiene guile)
3022
+ (make-syntax 'quasiquote '((top)) '(hygiene guile))))))
3023
+ '(hygiene guile)))
3024
+ (quasi (list p) (+ lev 1))))
3025
+ tmp-1)
3026
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
3027
+ (if tmp-1
3028
+ (apply (lambda (p q)
3029
+ (let ((tmp-1 p))
3030
+ (let ((tmp ($sc-dispatch
3031
+ tmp-1
3032
+ (cons (vector
3033
+ 'free-id
3034
+ (make-syntax 'unquote '((top)) '(hygiene guile)))
3035
+ 'each-any))))
3036
+ (if tmp
3037
+ (apply (lambda (p)
3038
+ (if (= lev 0)
3039
+ (quasilist*
3040
+ (map (lambda (tmp-680b775fb37a463-11f3)
3041
+ (list "value" tmp-680b775fb37a463-11f3))
3042
+ p)
3043
+ (quasi q lev))
3044
+ (quasicons
3045
+ (quasicons
3046
+ (list "quote"
3047
+ (make-syntax 'unquote '((top)) '(hygiene guile)))
3048
+ (quasi p (- lev 1)))
3049
+ (quasi q lev))))
3050
+ tmp)
3051
+ (let ((tmp ($sc-dispatch
3052
+ tmp-1
3053
+ (cons (vector
3054
+ 'free-id
3055
+ (make-syntax
3056
+ 'unquote-splicing
3057
+ '((top))
3058
+ '(hygiene guile)))
3059
+ 'each-any))))
3060
+ (if tmp
3061
+ (apply (lambda (p)
3062
+ (if (= lev 0)
3063
+ (quasiappend
3064
+ (map (lambda (tmp-680b775fb37a463-11f8)
3065
+ (list "value" tmp-680b775fb37a463-11f8))
3066
+ p)
3067
+ (quasi q lev))
3068
+ (quasicons
3069
+ (quasicons
3070
+ (list "quote"
3071
+ (make-syntax
3072
+ 'unquote-splicing
3073
+ '((top))
3074
+ '(hygiene guile)))
3075
+ (quasi p (- lev 1)))
3076
+ (quasi q lev))))
3077
+ tmp)
3078
+ (quasicons (quasi p lev) (quasi q lev))))))))
3079
+ tmp-1)
3080
+ (let ((tmp-1 ($sc-dispatch tmp '#(vector each-any))))
3081
+ (if tmp-1
3082
+ (apply (lambda (x) (quasivector (vquasi x lev))) tmp-1)
3083
+ (let ((p tmp)) (list "quote" p)))))))))))))
3084
+ (vquasi
3085
+ (lambda (p lev)
3086
+ (let ((tmp p))
3087
+ (let ((tmp-1 ($sc-dispatch tmp '(any . any))))
3088
+ (if tmp-1
3089
+ (apply (lambda (p q)
3090
+ (let ((tmp-1 p))
3091
+ (let ((tmp ($sc-dispatch
3092
+ tmp-1
3093
+ (cons (vector 'free-id (make-syntax 'unquote '((top)) '(hygiene guile)))
3094
+ 'each-any))))
3095
+ (if tmp
3096
+ (apply (lambda (p)
3097
+ (if (= lev 0)
3098
+ (quasilist*
3099
+ (map (lambda (tmp-680b775fb37a463-120e)
3100
+ (list "value" tmp-680b775fb37a463-120e))
3101
+ p)
3102
+ (vquasi q lev))
3103
+ (quasicons
3104
+ (quasicons
3105
+ (list "quote" (make-syntax 'unquote '((top)) '(hygiene guile)))
3106
+ (quasi p (- lev 1)))
3107
+ (vquasi q lev))))
3108
+ tmp)
3109
+ (let ((tmp ($sc-dispatch
3110
+ tmp-1
3111
+ (cons (vector
3112
+ 'free-id
3113
+ (make-syntax 'unquote-splicing '((top)) '(hygiene guile)))
3114
+ 'each-any))))
3115
+ (if tmp
3116
+ (apply (lambda (p)
3117
+ (if (= lev 0)
3118
+ (quasiappend
3119
+ (map (lambda (tmp-680b775fb37a463)
3120
+ (list "value" tmp-680b775fb37a463))
3121
+ p)
3122
+ (vquasi q lev))
3123
+ (quasicons
3124
+ (quasicons
3125
+ (list "quote"
3126
+ (make-syntax 'unquote-splicing '((top)) '(hygiene guile)))
3127
+ (quasi p (- lev 1)))
3128
+ (vquasi q lev))))
3129
+ tmp)
3130
+ (quasicons (quasi p lev) (vquasi q lev))))))))
3131
+ tmp-1)
3132
+ (let ((tmp-1 ($sc-dispatch tmp '())))
3133
+ (if tmp-1
3134
+ (apply (lambda () '("quote" ())) tmp-1)
3135
+ (syntax-violation
3136
+ #f
3137
+ "source expression failed to match any pattern"
3138
+ tmp))))))))
3139
+ (quasicons
3140
+ (lambda (x y)
3141
+ (let ((tmp-1 (list x y)))
3142
+ (let ((tmp ($sc-dispatch tmp-1 '(any any))))
3143
+ (if tmp
3144
+ (apply (lambda (x y)
3145
+ (let ((tmp y))
3146
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "quote") any))))
3147
+ (if tmp-1
3148
+ (apply (lambda (dy)
3149
+ (let ((tmp x))
3150
+ (let ((tmp ($sc-dispatch tmp '(#(atom "quote") any))))
3151
+ (if tmp
3152
+ (apply (lambda (dx) (list "quote" (cons dx dy))) tmp)
3153
+ (if (null? dy) (list "list" x) (list "list*" x y))))))
3154
+ tmp-1)
3155
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "list") . any))))
3156
+ (if tmp-1
3157
+ (apply (lambda (stuff) (cons "list" (cons x stuff))) tmp-1)
3158
+ (let ((tmp ($sc-dispatch tmp '(#(atom "list*") . any))))
3159
+ (if tmp
3160
+ (apply (lambda (stuff) (cons "list*" (cons x stuff))) tmp)
3161
+ (list "list*" x y)))))))))
3162
+ tmp)
3163
+ (syntax-violation
3164
+ #f
3165
+ "source expression failed to match any pattern"
3166
+ tmp-1))))))
3167
+ (quasiappend
3168
+ (lambda (x y)
3169
+ (let ((tmp y))
3170
+ (let ((tmp ($sc-dispatch tmp '(#(atom "quote") ()))))
3171
+ (if tmp
3172
+ (apply (lambda ()
3173
+ (if (null? x)
3174
+ '("quote" ())
3175
+ (if (null? (cdr x))
3176
+ (car x)
3177
+ (let ((tmp-1 x))
3178
+ (let ((tmp ($sc-dispatch tmp-1 'each-any)))
3179
+ (if tmp
3180
+ (apply (lambda (p) (cons "append" p)) tmp)
3181
+ (syntax-violation
3182
+ #f
3183
+ "source expression failed to match any pattern"
3184
+ tmp-1)))))))
3185
+ tmp)
3186
+ (if (null? x)
3187
+ y
3188
+ (let ((tmp-1 (list x y)))
3189
+ (let ((tmp ($sc-dispatch tmp-1 '(each-any any))))
3190
+ (if tmp
3191
+ (apply (lambda (p y) (cons "append" (append p (list y)))) tmp)
3192
+ (syntax-violation
3193
+ #f
3194
+ "source expression failed to match any pattern"
3195
+ tmp-1))))))))))
3196
+ (quasilist*
3197
+ (lambda (x y)
3198
+ (let f ((x x)) (if (null? x) y (quasicons (car x) (f (cdr x)))))))
3199
+ (quasivector
3200
+ (lambda (x)
3201
+ (let ((tmp x))
3202
+ (let ((tmp ($sc-dispatch tmp '(#(atom "quote") each-any))))
3203
+ (if tmp
3204
+ (apply (lambda (x) (list "quote" (list->vector x))) tmp)
3205
+ (let f ((y x)
3206
+ (k (lambda (ls)
3207
+ (let ((tmp-1 ls))
3208
+ (let ((tmp ($sc-dispatch tmp-1 'each-any)))
3209
+ (if tmp
3210
+ (apply (lambda (t-680b775fb37a463-125c)
3211
+ (cons "vector" t-680b775fb37a463-125c))
3212
+ tmp)
3213
+ (syntax-violation
3214
+ #f
3215
+ "source expression failed to match any pattern"
3216
+ tmp-1)))))))
3217
+ (let ((tmp y))
3218
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "quote") each-any))))
3219
+ (if tmp-1
3220
+ (apply (lambda (y)
3221
+ (k (map (lambda (tmp-680b775fb37a463) (list "quote" tmp-680b775fb37a463))
3222
+ y)))
3223
+ tmp-1)
3224
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "list") . each-any))))
3225
+ (if tmp-1
3226
+ (apply (lambda (y) (k y)) tmp-1)
3227
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "list*") . #(each+ any (any) ())))))
3228
+ (if tmp-1
3229
+ (apply (lambda (y z) (f z (lambda (ls) (k (append y ls))))) tmp-1)
3230
+ (let ((else tmp))
3231
+ (let ((tmp x))
3232
+ (let ((t-680b775fb37a463 tmp))
3233
+ (list "list->vector" t-680b775fb37a463)))))))))))))))))
3234
+ (emit (lambda (x)
3235
+ (let ((tmp x))
3236
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "quote") any))))
3237
+ (if tmp-1
3238
+ (apply (lambda (x) (list (make-syntax 'quote '((top)) '(hygiene guile)) x))
3239
+ tmp-1)
3240
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "list") . each-any))))
3241
+ (if tmp-1
3242
+ (apply (lambda (x)
3243
+ (let ((tmp-1 (map emit x)))
3244
+ (let ((tmp ($sc-dispatch tmp-1 'each-any)))
3245
+ (if tmp
3246
+ (apply (lambda (t-680b775fb37a463)
3247
+ (cons (make-syntax 'list '((top)) '(hygiene guile))
3248
+ t-680b775fb37a463))
3249
+ tmp)
3250
+ (syntax-violation
3251
+ #f
3252
+ "source expression failed to match any pattern"
3253
+ tmp-1)))))
3254
+ tmp-1)
3255
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "list*") . #(each+ any (any) ())))))
3256
+ (if tmp-1
3257
+ (apply (lambda (x y)
3258
+ (let f ((x* x))
3259
+ (if (null? x*)
3260
+ (emit y)
3261
+ (let ((tmp-1 (list (emit (car x*)) (f (cdr x*)))))
3262
+ (let ((tmp ($sc-dispatch tmp-1 '(any any))))
3263
+ (if tmp
3264
+ (apply (lambda (t-680b775fb37a463-129a t-680b775fb37a463)
3265
+ (list (make-syntax 'cons '((top)) '(hygiene guile))
3266
+ t-680b775fb37a463-129a
3267
+ t-680b775fb37a463))
3268
+ tmp)
3269
+ (syntax-violation
3270
+ #f
3271
+ "source expression failed to match any pattern"
3272
+ tmp-1)))))))
3273
+ tmp-1)
3274
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "append") . each-any))))
3275
+ (if tmp-1
3276
+ (apply (lambda (x)
3277
+ (let ((tmp-1 (map emit x)))
3278
+ (let ((tmp ($sc-dispatch tmp-1 'each-any)))
3279
+ (if tmp
3280
+ (apply (lambda (t-680b775fb37a463-12a6)
3281
+ (cons (make-syntax 'append '((top)) '(hygiene guile))
3282
+ t-680b775fb37a463-12a6))
3283
+ tmp)
3284
+ (syntax-violation
3285
+ #f
3286
+ "source expression failed to match any pattern"
3287
+ tmp-1)))))
3288
+ tmp-1)
3289
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "vector") . each-any))))
3290
+ (if tmp-1
3291
+ (apply (lambda (x)
3292
+ (let ((tmp-1 (map emit x)))
3293
+ (let ((tmp ($sc-dispatch tmp-1 'each-any)))
3294
+ (if tmp
3295
+ (apply (lambda (t-680b775fb37a463-12b2)
3296
+ (cons (make-syntax 'vector '((top)) '(hygiene guile))
3297
+ t-680b775fb37a463-12b2))
3298
+ tmp)
3299
+ (syntax-violation
3300
+ #f
3301
+ "source expression failed to match any pattern"
3302
+ tmp-1)))))
3303
+ tmp-1)
3304
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "list->vector") any))))
3305
+ (if tmp-1
3306
+ (apply (lambda (x)
3307
+ (let ((tmp (emit x)))
3308
+ (let ((t-680b775fb37a463-12be tmp))
3309
+ (list (make-syntax 'list->vector '((top)) '(hygiene guile))
3310
+ t-680b775fb37a463-12be))))
3311
+ tmp-1)
3312
+ (let ((tmp-1 ($sc-dispatch tmp '(#(atom "value") any))))
3313
+ (if tmp-1
3314
+ (apply (lambda (x) x) tmp-1)
3315
+ (syntax-violation
3316
+ #f
3317
+ "source expression failed to match any pattern"
3318
+ tmp)))))))))))))))))))
3319
+ (lambda (x)
3320
+ (let ((tmp-1 x))
3321
+ (let ((tmp ($sc-dispatch tmp-1 '(_ any))))
3322
+ (if tmp
3323
+ (apply (lambda (e) (emit (quasi e 0))) tmp)
3324
+ (syntax-violation
3325
+ #f
3326
+ "source expression failed to match any pattern"
3327
+ tmp-1)))))))))
3328
+
3329
+ (define include
3330
+ (let ((make-syntax make-syntax))
3331
+ (make-syntax-transformer
3332
+ 'include
3333
+ 'macro
3334
+ (lambda (x)
3335
+ (letrec*
3336
+ ((read-file
3337
+ (lambda (fn dir k)
3338
+ (let ((p (open-input-file
3339
+ (if (absolute-file-name? fn)
3340
+ fn
3341
+ (if dir
3342
+ (in-vicinity dir fn)
3343
+ (syntax-violation
3344
+ 'include
3345
+ "relative file name only allowed when the include form is in a file"
3346
+ x))))))
3347
+ (let ((enc (file-encoding p)))
3348
+ (set-port-encoding! p (let ((t enc)) (if t t "UTF-8")))
3349
+ (let f ((x (read p)) (result '()))
3350
+ (if (eof-object? x)
3351
+ (begin (close-port p) (reverse result))
3352
+ (f (read p) (cons (datum->syntax k x) result)))))))))
3353
+ (let ((src (syntax-source x)))
3354
+ (let ((file (if src (assq-ref src 'filename) #f)))
3355
+ (let ((dir (if (string? file) (dirname file) #f)))
3356
+ (let ((tmp-1 x))
3357
+ (let ((tmp ($sc-dispatch tmp-1 '(any any))))
3358
+ (if tmp
3359
+ (apply (lambda (k filename)
3360
+ (let ((fn (syntax->datum filename)))
3361
+ (let ((tmp-1 (read-file fn dir filename)))
3362
+ (let ((tmp ($sc-dispatch tmp-1 'each-any)))
3363
+ (if tmp
3364
+ (apply (lambda (exp)
3365
+ (cons (make-syntax 'begin '((top)) '(hygiene guile)) exp))
3366
+ tmp)
3367
+ (syntax-violation
3368
+ #f
3369
+ "source expression failed to match any pattern"
3370
+ tmp-1))))))
3371
+ tmp)
3372
+ (syntax-violation
3373
+ #f
3374
+ "source expression failed to match any pattern"
3375
+ tmp-1))))))))))))
3376
+
3377
+ (define include-from-path
3378
+ (let ((make-syntax make-syntax))
3379
+ (make-syntax-transformer
3380
+ 'include-from-path
3381
+ 'macro
3382
+ (lambda (x)
3383
+ (let ((tmp-1 x))
3384
+ (let ((tmp ($sc-dispatch tmp-1 '(any any))))
3385
+ (if tmp
3386
+ (apply (lambda (k filename)
3387
+ (let ((fn (syntax->datum filename)))
3388
+ (let ((tmp (datum->syntax
3389
+ filename
3390
+ (canonicalize-path
3391
+ (let ((t (%search-load-path fn)))
3392
+ (if t
3393
+ t
3394
+ (syntax-violation
3395
+ 'include-from-path
3396
+ "file not found in path"
3397
+ x
3398
+ filename)))))))
3399
+ (let ((fn tmp))
3400
+ (list (make-syntax 'include '((top)) '(hygiene guile)) fn)))))
3401
+ tmp)
3402
+ (syntax-violation
3403
+ #f
3404
+ "source expression failed to match any pattern"
3405
+ tmp-1))))))))
3406
+
3407
+ (define unquote
3408
+ (make-syntax-transformer
3409
+ 'unquote
3410
+ 'macro
3411
+ (lambda (x)
3412
+ (syntax-violation
3413
+ 'unquote
3414
+ "expression not valid outside of quasiquote"
3415
+ x))))
3416
+
3417
+ (define unquote-splicing
3418
+ (make-syntax-transformer
3419
+ 'unquote-splicing
3420
+ 'macro
3421
+ (lambda (x)
3422
+ (syntax-violation
3423
+ 'unquote-splicing
3424
+ "expression not valid outside of quasiquote"
3425
+ x))))
3426
+
3427
+ (define make-variable-transformer
3428
+ (lambda (proc)
3429
+ (if (procedure? proc)
3430
+ (let ((trans (lambda (x) (proc x))))
3431
+ (set-procedure-property! trans 'variable-transformer #t)
3432
+ trans)
3433
+ (error "variable transformer not a procedure" proc))))
3434
+
3435
+ (define identifier-syntax
3436
+ (let ((make-syntax make-syntax))
3437
+ (make-syntax-transformer
3438
+ 'identifier-syntax
3439
+ 'macro
3440
+ (lambda (xx)
3441
+ (let ((tmp-1 xx))
3442
+ (let ((tmp ($sc-dispatch tmp-1 '(_ any))))
3443
+ (if tmp
3444
+ (apply (lambda (e)
3445
+ (list (make-syntax 'lambda '((top)) '(hygiene guile))
3446
+ (list (make-syntax 'x '((top)) '(hygiene guile)))
3447
+ (vector
3448
+ (cons (make-syntax 'macro-type '((top)) '(hygiene guile))
3449
+ (make-syntax
3450
+ 'identifier-syntax
3451
+ (list '(top)
3452
+ (vector
3453
+ 'ribcage
3454
+ '#(identifier-syntax)
3455
+ '#((top))
3456
+ (vector
3457
+ (cons '(hygiene guile)
3458
+ (make-syntax 'identifier-syntax '((top)) '(hygiene guile))))))
3459
+ '(hygiene guile))))
3460
+ (list (make-syntax 'syntax-case '((top)) '(hygiene guile))
3461
+ (make-syntax 'x '((top)) '(hygiene guile))
3462
+ '()
3463
+ (list (make-syntax 'id '((top)) '(hygiene guile))
3464
+ (list (make-syntax 'identifier? '((top)) '(hygiene guile))
3465
+ (list (make-syntax 'syntax '((top)) '(hygiene guile))
3466
+ (make-syntax 'id '((top)) '(hygiene guile))))
3467
+ (list (make-syntax 'syntax '((top)) '(hygiene guile)) e))
3468
+ (list (list (make-syntax '_ '((top)) '(hygiene guile))
3469
+ (make-syntax 'x '((top)) '(hygiene guile))
3470
+ (make-syntax '... '((top)) '(hygiene guile)))
3471
+ (list (make-syntax 'syntax '((top)) '(hygiene guile))
3472
+ (cons e
3473
+ (list (make-syntax 'x '((top)) '(hygiene guile))
3474
+ (make-syntax '... '((top)) '(hygiene guile)))))))))
3475
+ tmp)
3476
+ (let ((tmp ($sc-dispatch
3477
+ tmp-1
3478
+ (list '_
3479
+ '(any any)
3480
+ (list (list (vector 'free-id (make-syntax 'set! '((top)) '(hygiene guile)))
3481
+ 'any
3482
+ 'any)
3483
+ 'any)))))
3484
+ (if (if tmp
3485
+ (apply (lambda (id exp1 var val exp2)
3486
+ (if (identifier? id) (identifier? var) #f))
3487
+ tmp)
3488
+ #f)
3489
+ (apply (lambda (id exp1 var val exp2)
3490
+ (list (make-syntax 'make-variable-transformer '((top)) '(hygiene guile))
3491
+ (list (make-syntax 'lambda '((top)) '(hygiene guile))
3492
+ (list (make-syntax 'x '((top)) '(hygiene guile)))
3493
+ (vector
3494
+ (cons (make-syntax 'macro-type '((top)) '(hygiene guile))
3495
+ (make-syntax 'variable-transformer '((top)) '(hygiene guile))))
3496
+ (list (make-syntax 'syntax-case '((top)) '(hygiene guile))
3497
+ (make-syntax 'x '((top)) '(hygiene guile))
3498
+ (list (make-syntax 'set! '((top)) '(hygiene guile)))
3499
+ (list (list (make-syntax 'set! '((top)) '(hygiene guile)) var val)
3500
+ (list (make-syntax 'syntax '((top)) '(hygiene guile)) exp2))
3501
+ (list (cons id
3502
+ (list (make-syntax 'x '((top)) '(hygiene guile))
3503
+ (make-syntax '... '((top)) '(hygiene guile))))
3504
+ (list (make-syntax 'syntax '((top)) '(hygiene guile))
3505
+ (cons exp1
3506
+ (list (make-syntax 'x '((top)) '(hygiene guile))
3507
+ (make-syntax '... '((top)) '(hygiene guile))))))
3508
+ (list id
3509
+ (list (make-syntax 'identifier? '((top)) '(hygiene guile))
3510
+ (list (make-syntax 'syntax '((top)) '(hygiene guile)) id))
3511
+ (list (make-syntax 'syntax '((top)) '(hygiene guile)) exp1))))))
3512
+ tmp)
3513
+ (syntax-violation
3514
+ #f
3515
+ "source expression failed to match any pattern"
3516
+ tmp-1))))))))))
3517
+
3518
+ (define define*
3519
+ (let ((make-syntax make-syntax))
3520
+ (make-syntax-transformer
3521
+ 'define*
3522
+ 'macro
3523
+ (lambda (x)
3524
+ (let ((tmp-1 x))
3525
+ (let ((tmp ($sc-dispatch tmp-1 '(_ (any . any) any . each-any))))
3526
+ (if tmp
3527
+ (apply (lambda (id args b0 b1)
3528
+ (list (make-syntax 'define '((top)) '(hygiene guile))
3529
+ id
3530
+ (cons (make-syntax 'lambda* '((top)) '(hygiene guile))
3531
+ (cons args (cons b0 b1)))))
3532
+ tmp)
3533
+ (let ((tmp ($sc-dispatch tmp-1 '(_ any any))))
3534
+ (if (if tmp (apply (lambda (id val) (identifier? id)) tmp) #f)
3535
+ (apply (lambda (id val)
3536
+ (list (make-syntax 'define '((top)) '(hygiene guile)) id val))
3537
+ tmp)
3538
+ (syntax-violation
3539
+ #f
3540
+ "source expression failed to match any pattern"
3541
+ tmp-1))))))))))
3542
+