LilyPond-Ruby 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1109) 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/lilypond/2.24.1/ccache/lily/accreg.go +0 -0
  330. data/lib/lilypond/2.24.1/ccache/lily/auto-beam.go +0 -0
  331. data/lib/lilypond/2.24.1/ccache/lily/autochange.go +0 -0
  332. data/lib/lilypond/2.24.1/ccache/lily/backend-library.go +0 -0
  333. data/lib/lilypond/2.24.1/ccache/lily/bar-line.go +0 -0
  334. data/lib/lilypond/2.24.1/ccache/lily/breath.go +0 -0
  335. data/lib/lilypond/2.24.1/ccache/lily/c++.go +0 -0
  336. data/lib/lilypond/2.24.1/ccache/lily/chord-entry.go +0 -0
  337. data/lib/lilypond/2.24.1/ccache/lily/chord-ignatzek-names.go +0 -0
  338. data/lib/lilypond/2.24.1/ccache/lily/chord-name.go +0 -0
  339. data/lib/lilypond/2.24.1/ccache/lily/clip-region.go +0 -0
  340. data/lib/lilypond/2.24.1/ccache/lily/color.go +0 -0
  341. data/lib/lilypond/2.24.1/ccache/lily/curried-definitions.go +0 -0
  342. data/lib/lilypond/2.24.1/ccache/lily/define-context-properties.go +0 -0
  343. data/lib/lilypond/2.24.1/ccache/lily/define-event-classes.go +0 -0
  344. data/lib/lilypond/2.24.1/ccache/lily/define-grob-interfaces.go +0 -0
  345. data/lib/lilypond/2.24.1/ccache/lily/define-grob-properties.go +0 -0
  346. data/lib/lilypond/2.24.1/ccache/lily/define-grobs.go +0 -0
  347. data/lib/lilypond/2.24.1/ccache/lily/define-markup-commands.go +0 -0
  348. data/lib/lilypond/2.24.1/ccache/lily/define-music-callbacks.go +0 -0
  349. data/lib/lilypond/2.24.1/ccache/lily/define-music-display-methods.go +0 -0
  350. data/lib/lilypond/2.24.1/ccache/lily/define-music-properties.go +0 -0
  351. data/lib/lilypond/2.24.1/ccache/lily/define-music-types.go +0 -0
  352. data/lib/lilypond/2.24.1/ccache/lily/define-note-names.go +0 -0
  353. data/lib/lilypond/2.24.1/ccache/lily/define-stencil-commands.go +0 -0
  354. data/lib/lilypond/2.24.1/ccache/lily/define-woodwind-diagrams.go +0 -0
  355. data/lib/lilypond/2.24.1/ccache/lily/display-lily.go +0 -0
  356. data/lib/lilypond/2.24.1/ccache/lily/display-woodwind-diagrams.go +0 -0
  357. data/lib/lilypond/2.24.1/ccache/lily/file-cache.go +0 -0
  358. data/lib/lilypond/2.24.1/ccache/lily/flag-styles.go +0 -0
  359. data/lib/lilypond/2.24.1/ccache/lily/font-encodings.go +0 -0
  360. data/lib/lilypond/2.24.1/ccache/lily/font.go +0 -0
  361. data/lib/lilypond/2.24.1/ccache/lily/framework-cairo.go +0 -0
  362. data/lib/lilypond/2.24.1/ccache/lily/framework-ps.go +0 -0
  363. data/lib/lilypond/2.24.1/ccache/lily/framework-svg.go +0 -0
  364. data/lib/lilypond/2.24.1/ccache/lily/fret-diagrams.go +0 -0
  365. data/lib/lilypond/2.24.1/ccache/lily/graphviz.go +0 -0
  366. data/lib/lilypond/2.24.1/ccache/lily/harp-pedals.go +0 -0
  367. data/lib/lilypond/2.24.1/ccache/lily/layout-beam.go +0 -0
  368. data/lib/lilypond/2.24.1/ccache/lily/layout-slur.go +0 -0
  369. data/lib/lilypond/2.24.1/ccache/lily/lily-library.go +0 -0
  370. data/lib/lilypond/2.24.1/ccache/lily/lily.go +0 -0
  371. data/lib/lilypond/2.24.1/ccache/lily/ly-syntax-constructors.go +0 -0
  372. data/lib/lilypond/2.24.1/ccache/lily/markup-macros.go +0 -0
  373. data/lib/lilypond/2.24.1/ccache/lily/markup.go +0 -0
  374. data/lib/lilypond/2.24.1/ccache/lily/midi.go +0 -0
  375. data/lib/lilypond/2.24.1/ccache/lily/modal-transforms.go +0 -0
  376. data/lib/lilypond/2.24.1/ccache/lily/music-functions.go +0 -0
  377. data/lib/lilypond/2.24.1/ccache/lily/output-lib.go +0 -0
  378. data/lib/lilypond/2.24.1/ccache/lily/output-ps.go +0 -0
  379. data/lib/lilypond/2.24.1/ccache/lily/output-svg.go +0 -0
  380. data/lib/lilypond/2.24.1/ccache/lily/page.go +0 -0
  381. data/lib/lilypond/2.24.1/ccache/lily/paper-system.go +0 -0
  382. data/lib/lilypond/2.24.1/ccache/lily/paper.go +0 -0
  383. data/lib/lilypond/2.24.1/ccache/lily/parser-clef.go +0 -0
  384. data/lib/lilypond/2.24.1/ccache/lily/parser-ly-from-scheme.go +0 -0
  385. data/lib/lilypond/2.24.1/ccache/lily/part-combiner.go +0 -0
  386. data/lib/lilypond/2.24.1/ccache/lily/predefined-fretboards.go +0 -0
  387. data/lib/lilypond/2.24.1/ccache/lily/ps-to-png.go +0 -0
  388. data/lib/lilypond/2.24.1/ccache/lily/scheme-engravers.go +0 -0
  389. data/lib/lilypond/2.24.1/ccache/lily/scheme-performers.go +0 -0
  390. data/lib/lilypond/2.24.1/ccache/lily/script.go +0 -0
  391. data/lib/lilypond/2.24.1/ccache/lily/skyline.go +0 -0
  392. data/lib/lilypond/2.24.1/ccache/lily/song-util.go +0 -0
  393. data/lib/lilypond/2.24.1/ccache/lily/song.go +0 -0
  394. data/lib/lilypond/2.24.1/ccache/lily/stencil.go +0 -0
  395. data/lib/lilypond/2.24.1/ccache/lily/tablature.go +0 -0
  396. data/lib/lilypond/2.24.1/ccache/lily/time-signature-settings.go +0 -0
  397. data/lib/lilypond/2.24.1/ccache/lily/time-signature.go +0 -0
  398. data/lib/lilypond/2.24.1/ccache/lily/titling.go +0 -0
  399. data/lib/lilypond/2.24.1/ccache/lily/to-xml.go +0 -0
  400. data/lib/lilypond/2.24.1/ccache/lily/translation-functions.go +0 -0
  401. data/share/emacs/site-lisp/lilypond-font-lock.el +208 -0
  402. data/share/emacs/site-lisp/lilypond-indent.el +605 -0
  403. data/share/emacs/site-lisp/lilypond-init.el +21 -0
  404. data/share/emacs/site-lisp/lilypond-mode.el +1204 -0
  405. data/share/emacs/site-lisp/lilypond-song.el +556 -0
  406. data/share/emacs/site-lisp/lilypond-what-beat.el +279 -0
  407. data/share/emacs/site-lisp/lilypond-words.el +1428 -0
  408. data/share/guile/2.2/guile-procedures.txt +8860 -0
  409. data/share/guile/2.2/ice-9/and-let-star.scm +73 -0
  410. data/share/guile/2.2/ice-9/arrays.scm +70 -0
  411. data/share/guile/2.2/ice-9/atomic.scm +38 -0
  412. data/share/guile/2.2/ice-9/binary-ports.scm +53 -0
  413. data/share/guile/2.2/ice-9/boot-9.scm +4131 -0
  414. data/share/guile/2.2/ice-9/buffered-input.scm +109 -0
  415. data/share/guile/2.2/ice-9/calling.scm +326 -0
  416. data/share/guile/2.2/ice-9/channel.scm +170 -0
  417. data/share/guile/2.2/ice-9/command-line.scm +477 -0
  418. data/share/guile/2.2/ice-9/common-list.scm +278 -0
  419. data/share/guile/2.2/ice-9/control.scm +110 -0
  420. data/share/guile/2.2/ice-9/curried-definitions.scm +57 -0
  421. data/share/guile/2.2/ice-9/debug.scm +25 -0
  422. data/share/guile/2.2/ice-9/deprecated.scm +93 -0
  423. data/share/guile/2.2/ice-9/documentation.scm +203 -0
  424. data/share/guile/2.2/ice-9/eval-string.scm +90 -0
  425. data/share/guile/2.2/ice-9/eval.scm +723 -0
  426. data/share/guile/2.2/ice-9/expect.scm +171 -0
  427. data/share/guile/2.2/ice-9/fdes-finalizers.scm +25 -0
  428. data/share/guile/2.2/ice-9/format.scm +1626 -0
  429. data/share/guile/2.2/ice-9/ftw.scm +564 -0
  430. data/share/guile/2.2/ice-9/futures.scm +308 -0
  431. data/share/guile/2.2/ice-9/gap-buffer.scm +283 -0
  432. data/share/guile/2.2/ice-9/getopt-long.scm +371 -0
  433. data/share/guile/2.2/ice-9/hash-table.scm +45 -0
  434. data/share/guile/2.2/ice-9/hcons.scm +80 -0
  435. data/share/guile/2.2/ice-9/history.scm +65 -0
  436. data/share/guile/2.2/ice-9/i18n.scm +531 -0
  437. data/share/guile/2.2/ice-9/iconv.scm +95 -0
  438. data/share/guile/2.2/ice-9/lineio.scm +115 -0
  439. data/share/guile/2.2/ice-9/list.scm +36 -0
  440. data/share/guile/2.2/ice-9/local-eval.scm +261 -0
  441. data/share/guile/2.2/ice-9/ls.scm +94 -0
  442. data/share/guile/2.2/ice-9/mapping.scm +118 -0
  443. data/share/guile/2.2/ice-9/match.scm +59 -0
  444. data/share/guile/2.2/ice-9/match.upstream.scm +917 -0
  445. data/share/guile/2.2/ice-9/networking.scm +94 -0
  446. data/share/guile/2.2/ice-9/null.scm +34 -0
  447. data/share/guile/2.2/ice-9/occam-channel.scm +261 -0
  448. data/share/guile/2.2/ice-9/optargs.scm +381 -0
  449. data/share/guile/2.2/ice-9/peg/cache.scm +45 -0
  450. data/share/guile/2.2/ice-9/peg/codegen.scm +359 -0
  451. data/share/guile/2.2/ice-9/peg/simplify-tree.scm +97 -0
  452. data/share/guile/2.2/ice-9/peg/string-peg.scm +273 -0
  453. data/share/guile/2.2/ice-9/peg/using-parsers.scm +116 -0
  454. data/share/guile/2.2/ice-9/peg.scm +42 -0
  455. data/share/guile/2.2/ice-9/poe.scm +116 -0
  456. data/share/guile/2.2/ice-9/poll.scm +172 -0
  457. data/share/guile/2.2/ice-9/popen.scm +178 -0
  458. data/share/guile/2.2/ice-9/ports.scm +566 -0
  459. data/share/guile/2.2/ice-9/posix.scm +75 -0
  460. data/share/guile/2.2/ice-9/pretty-print.scm +483 -0
  461. data/share/guile/2.2/ice-9/psyntax-pp.scm +3542 -0
  462. data/share/guile/2.2/ice-9/psyntax.scm +3326 -0
  463. data/share/guile/2.2/ice-9/q.scm +153 -0
  464. data/share/guile/2.2/ice-9/quasisyntax.scm +136 -0
  465. data/share/guile/2.2/ice-9/r5rs.scm +45 -0
  466. data/share/guile/2.2/ice-9/r6rs-libraries.scm +242 -0
  467. data/share/guile/2.2/ice-9/rdelim.scm +208 -0
  468. data/share/guile/2.2/ice-9/receive.scm +26 -0
  469. data/share/guile/2.2/ice-9/regex.scm +229 -0
  470. data/share/guile/2.2/ice-9/runq.scm +241 -0
  471. data/share/guile/2.2/ice-9/rw.scm +27 -0
  472. data/share/guile/2.2/ice-9/safe-r5rs.scm +145 -0
  473. data/share/guile/2.2/ice-9/safe.scm +34 -0
  474. data/share/guile/2.2/ice-9/sandbox.scm +1399 -0
  475. data/share/guile/2.2/ice-9/save-stack.scm +58 -0
  476. data/share/guile/2.2/ice-9/scm-style-repl.scm +279 -0
  477. data/share/guile/2.2/ice-9/serialize.scm +114 -0
  478. data/share/guile/2.2/ice-9/session.scm +530 -0
  479. data/share/guile/2.2/ice-9/slib.scm +33 -0
  480. data/share/guile/2.2/ice-9/stack-catch.scm +47 -0
  481. data/share/guile/2.2/ice-9/streams.scm +168 -0
  482. data/share/guile/2.2/ice-9/string-fun.scm +280 -0
  483. data/share/guile/2.2/ice-9/suspendable-ports.scm +788 -0
  484. data/share/guile/2.2/ice-9/syncase.scm +37 -0
  485. data/share/guile/2.2/ice-9/textual-ports.scm +70 -0
  486. data/share/guile/2.2/ice-9/threads.scm +392 -0
  487. data/share/guile/2.2/ice-9/time.scm +58 -0
  488. data/share/guile/2.2/ice-9/top-repl.scm +78 -0
  489. data/share/guile/2.2/ice-9/unicode.scm +26 -0
  490. data/share/guile/2.2/ice-9/vlist.scm +595 -0
  491. data/share/guile/2.2/ice-9/weak-vector.scm +31 -0
  492. data/share/guile/2.2/language/brainfuck/compile-scheme.scm +123 -0
  493. data/share/guile/2.2/language/brainfuck/compile-tree-il.scm +184 -0
  494. data/share/guile/2.2/language/brainfuck/parse.scm +95 -0
  495. data/share/guile/2.2/language/brainfuck/spec.scm +43 -0
  496. data/share/guile/2.2/language/bytecode/spec.scm +42 -0
  497. data/share/guile/2.2/language/bytecode.scm +104 -0
  498. data/share/guile/2.2/language/cps/closure-conversion.scm +848 -0
  499. data/share/guile/2.2/language/cps/compile-bytecode.scm +610 -0
  500. data/share/guile/2.2/language/cps/constructors.scm +106 -0
  501. data/share/guile/2.2/language/cps/contification.scm +448 -0
  502. data/share/guile/2.2/language/cps/cse.scm +414 -0
  503. data/share/guile/2.2/language/cps/dce.scm +363 -0
  504. data/share/guile/2.2/language/cps/effects-analysis.scm +597 -0
  505. data/share/guile/2.2/language/cps/elide-values.scm +88 -0
  506. data/share/guile/2.2/language/cps/handle-interrupts.scm +69 -0
  507. data/share/guile/2.2/language/cps/intmap.scm +765 -0
  508. data/share/guile/2.2/language/cps/intset.scm +830 -0
  509. data/share/guile/2.2/language/cps/licm.scm +308 -0
  510. data/share/guile/2.2/language/cps/optimize.scm +135 -0
  511. data/share/guile/2.2/language/cps/peel-loops.scm +287 -0
  512. data/share/guile/2.2/language/cps/primitives.scm +141 -0
  513. data/share/guile/2.2/language/cps/prune-bailouts.scm +86 -0
  514. data/share/guile/2.2/language/cps/prune-top-level-scopes.scm +63 -0
  515. data/share/guile/2.2/language/cps/reify-primitives.scm +179 -0
  516. data/share/guile/2.2/language/cps/renumber.scm +217 -0
  517. data/share/guile/2.2/language/cps/rotate-loops.scm +239 -0
  518. data/share/guile/2.2/language/cps/self-references.scm +79 -0
  519. data/share/guile/2.2/language/cps/simplify.scm +274 -0
  520. data/share/guile/2.2/language/cps/slot-allocation.scm +1058 -0
  521. data/share/guile/2.2/language/cps/spec.scm +51 -0
  522. data/share/guile/2.2/language/cps/specialize-numbers.scm +724 -0
  523. data/share/guile/2.2/language/cps/specialize-primcalls.scm +87 -0
  524. data/share/guile/2.2/language/cps/split-rec.scm +174 -0
  525. data/share/guile/2.2/language/cps/type-checks.scm +72 -0
  526. data/share/guile/2.2/language/cps/type-fold.scm +455 -0
  527. data/share/guile/2.2/language/cps/types.scm +1826 -0
  528. data/share/guile/2.2/language/cps/utils.scm +550 -0
  529. data/share/guile/2.2/language/cps/verify.scm +304 -0
  530. data/share/guile/2.2/language/cps/with-cps.scm +145 -0
  531. data/share/guile/2.2/language/cps.scm +358 -0
  532. data/share/guile/2.2/language/ecmascript/array.scm +121 -0
  533. data/share/guile/2.2/language/ecmascript/base.scm +251 -0
  534. data/share/guile/2.2/language/ecmascript/compile-tree-il.scm +576 -0
  535. data/share/guile/2.2/language/ecmascript/function.scm +78 -0
  536. data/share/guile/2.2/language/ecmascript/impl.scm +169 -0
  537. data/share/guile/2.2/language/ecmascript/parse.scm +352 -0
  538. data/share/guile/2.2/language/ecmascript/spec.scm +37 -0
  539. data/share/guile/2.2/language/ecmascript/tokenize.scm +513 -0
  540. data/share/guile/2.2/language/elisp/bindings.scm +107 -0
  541. data/share/guile/2.2/language/elisp/boot.el +617 -0
  542. data/share/guile/2.2/language/elisp/compile-tree-il.scm +812 -0
  543. data/share/guile/2.2/language/elisp/falias.scm +47 -0
  544. data/share/guile/2.2/language/elisp/lexer.scm +430 -0
  545. data/share/guile/2.2/language/elisp/parser.scm +222 -0
  546. data/share/guile/2.2/language/elisp/runtime/function-slot.scm +63 -0
  547. data/share/guile/2.2/language/elisp/runtime/value-slot.scm +24 -0
  548. data/share/guile/2.2/language/elisp/runtime.scm +153 -0
  549. data/share/guile/2.2/language/elisp/spec.scm +43 -0
  550. data/share/guile/2.2/language/scheme/compile-tree-il.scm +33 -0
  551. data/share/guile/2.2/language/scheme/decompile-tree-il.scm +796 -0
  552. data/share/guile/2.2/language/scheme/spec.scm +63 -0
  553. data/share/guile/2.2/language/tree-il/analyze.scm +1568 -0
  554. data/share/guile/2.2/language/tree-il/canonicalize.scm +82 -0
  555. data/share/guile/2.2/language/tree-il/compile-cps.scm +1149 -0
  556. data/share/guile/2.2/language/tree-il/debug.scm +246 -0
  557. data/share/guile/2.2/language/tree-il/effects.scm +591 -0
  558. data/share/guile/2.2/language/tree-il/fix-letrec.scm +314 -0
  559. data/share/guile/2.2/language/tree-il/optimize.scm +43 -0
  560. data/share/guile/2.2/language/tree-il/peval.scm +1669 -0
  561. data/share/guile/2.2/language/tree-il/primitives.scm +630 -0
  562. data/share/guile/2.2/language/tree-il/spec.scm +46 -0
  563. data/share/guile/2.2/language/tree-il.scm +630 -0
  564. data/share/guile/2.2/language/value/spec.scm +30 -0
  565. data/share/guile/2.2/oop/goops/accessors.scm +72 -0
  566. data/share/guile/2.2/oop/goops/active-slot.scm +63 -0
  567. data/share/guile/2.2/oop/goops/composite-slot.scm +83 -0
  568. data/share/guile/2.2/oop/goops/describe.scm +189 -0
  569. data/share/guile/2.2/oop/goops/internal.scm +30 -0
  570. data/share/guile/2.2/oop/goops/save.scm +874 -0
  571. data/share/guile/2.2/oop/goops/simple.scm +30 -0
  572. data/share/guile/2.2/oop/goops/stklos.scm +74 -0
  573. data/share/guile/2.2/oop/goops.scm +3176 -0
  574. data/share/guile/2.2/rnrs/arithmetic/bitwise.scm +92 -0
  575. data/share/guile/2.2/rnrs/arithmetic/fixnums.scm +291 -0
  576. data/share/guile/2.2/rnrs/arithmetic/flonums.scm +203 -0
  577. data/share/guile/2.2/rnrs/base.scm +291 -0
  578. data/share/guile/2.2/rnrs/bytevectors.scm +83 -0
  579. data/share/guile/2.2/rnrs/conditions.scm +225 -0
  580. data/share/guile/2.2/rnrs/control.scm +22 -0
  581. data/share/guile/2.2/rnrs/enums.scm +152 -0
  582. data/share/guile/2.2/rnrs/eval.scm +39 -0
  583. data/share/guile/2.2/rnrs/exceptions.scm +276 -0
  584. data/share/guile/2.2/rnrs/files.scm +96 -0
  585. data/share/guile/2.2/rnrs/hashtables.scm +190 -0
  586. data/share/guile/2.2/rnrs/io/ports.scm +554 -0
  587. data/share/guile/2.2/rnrs/io/simple.scm +167 -0
  588. data/share/guile/2.2/rnrs/lists.scm +55 -0
  589. data/share/guile/2.2/rnrs/mutable-pairs.scm +23 -0
  590. data/share/guile/2.2/rnrs/mutable-strings.scm +23 -0
  591. data/share/guile/2.2/rnrs/programs.scm +22 -0
  592. data/share/guile/2.2/rnrs/r5rs.scm +34 -0
  593. data/share/guile/2.2/rnrs/records/inspection.scm +81 -0
  594. data/share/guile/2.2/rnrs/records/procedural.scm +289 -0
  595. data/share/guile/2.2/rnrs/records/syntactic.scm +248 -0
  596. data/share/guile/2.2/rnrs/sorting.scm +27 -0
  597. data/share/guile/2.2/rnrs/syntax-case.scm +68 -0
  598. data/share/guile/2.2/rnrs/unicode.scm +104 -0
  599. data/share/guile/2.2/rnrs.scm +289 -0
  600. data/share/guile/2.2/scripts/api-diff.scm +179 -0
  601. data/share/guile/2.2/scripts/autofrisk.scm +218 -0
  602. data/share/guile/2.2/scripts/compile.scm +273 -0
  603. data/share/guile/2.2/scripts/disassemble.scm +38 -0
  604. data/share/guile/2.2/scripts/display-commentary.scm +67 -0
  605. data/share/guile/2.2/scripts/doc-snarf.scm +439 -0
  606. data/share/guile/2.2/scripts/frisk.scm +290 -0
  607. data/share/guile/2.2/scripts/generate-autoload.scm +144 -0
  608. data/share/guile/2.2/scripts/help.scm +188 -0
  609. data/share/guile/2.2/scripts/lint.scm +318 -0
  610. data/share/guile/2.2/scripts/list.scm +91 -0
  611. data/share/guile/2.2/scripts/punify.scm +87 -0
  612. data/share/guile/2.2/scripts/read-rfc822.scm +131 -0
  613. data/share/guile/2.2/scripts/read-scheme-source.scm +282 -0
  614. data/share/guile/2.2/scripts/read-text-outline.scm +253 -0
  615. data/share/guile/2.2/scripts/scan-api.scm +223 -0
  616. data/share/guile/2.2/scripts/snarf-check-and-output-texi.scm +303 -0
  617. data/share/guile/2.2/scripts/snarf-guile-m4-docs.scm +86 -0
  618. data/share/guile/2.2/scripts/summarize-guile-TODO.scm +213 -0
  619. data/share/guile/2.2/scripts/use2dot.scm +110 -0
  620. data/share/guile/2.2/srfi/srfi-1.scm +1061 -0
  621. data/share/guile/2.2/srfi/srfi-10.scm +89 -0
  622. data/share/guile/2.2/srfi/srfi-11.scm +146 -0
  623. data/share/guile/2.2/srfi/srfi-111.scm +37 -0
  624. data/share/guile/2.2/srfi/srfi-13.scm +132 -0
  625. data/share/guile/2.2/srfi/srfi-14.scm +99 -0
  626. data/share/guile/2.2/srfi/srfi-16.scm +51 -0
  627. data/share/guile/2.2/srfi/srfi-17.scm +174 -0
  628. data/share/guile/2.2/srfi/srfi-18.scm +382 -0
  629. data/share/guile/2.2/srfi/srfi-19.scm +1470 -0
  630. data/share/guile/2.2/srfi/srfi-2.scm +31 -0
  631. data/share/guile/2.2/srfi/srfi-26.scm +66 -0
  632. data/share/guile/2.2/srfi/srfi-27.scm +96 -0
  633. data/share/guile/2.2/srfi/srfi-28.scm +34 -0
  634. data/share/guile/2.2/srfi/srfi-31.scm +35 -0
  635. data/share/guile/2.2/srfi/srfi-34.scm +84 -0
  636. data/share/guile/2.2/srfi/srfi-35.scm +351 -0
  637. data/share/guile/2.2/srfi/srfi-37.scm +234 -0
  638. data/share/guile/2.2/srfi/srfi-38.scm +207 -0
  639. data/share/guile/2.2/srfi/srfi-39.scm +55 -0
  640. data/share/guile/2.2/srfi/srfi-4/gnu.scm +80 -0
  641. data/share/guile/2.2/srfi/srfi-4.scm +118 -0
  642. data/share/guile/2.2/srfi/srfi-41.scm +505 -0
  643. data/share/guile/2.2/srfi/srfi-42/ec.scm +1053 -0
  644. data/share/guile/2.2/srfi/srfi-42.scm +66 -0
  645. data/share/guile/2.2/srfi/srfi-43.scm +1077 -0
  646. data/share/guile/2.2/srfi/srfi-45.scm +93 -0
  647. data/share/guile/2.2/srfi/srfi-6.scm +29 -0
  648. data/share/guile/2.2/srfi/srfi-60.scm +73 -0
  649. data/share/guile/2.2/srfi/srfi-64/testing.scm +1040 -0
  650. data/share/guile/2.2/srfi/srfi-64.scm +55 -0
  651. data/share/guile/2.2/srfi/srfi-67/compare.scm +686 -0
  652. data/share/guile/2.2/srfi/srfi-67.scm +88 -0
  653. data/share/guile/2.2/srfi/srfi-69.scm +336 -0
  654. data/share/guile/2.2/srfi/srfi-71.scm +267 -0
  655. data/share/guile/2.2/srfi/srfi-8.scm +31 -0
  656. data/share/guile/2.2/srfi/srfi-88.scm +53 -0
  657. data/share/guile/2.2/srfi/srfi-9/gnu.scm +168 -0
  658. data/share/guile/2.2/srfi/srfi-9.scm +351 -0
  659. data/share/guile/2.2/srfi/srfi-98.scm +44 -0
  660. data/share/guile/2.2/statprof.scm +988 -0
  661. data/share/guile/2.2/sxml/apply-templates.scm +102 -0
  662. data/share/guile/2.2/sxml/fold.scm +250 -0
  663. data/share/guile/2.2/sxml/match.scm +75 -0
  664. data/share/guile/2.2/sxml/simple.scm +408 -0
  665. data/share/guile/2.2/sxml/ssax/input-parse.scm +180 -0
  666. data/share/guile/2.2/sxml/ssax.scm +265 -0
  667. data/share/guile/2.2/sxml/sxml-match.ss +1181 -0
  668. data/share/guile/2.2/sxml/transform.scm +298 -0
  669. data/share/guile/2.2/sxml/upstream/SSAX.scm +3235 -0
  670. data/share/guile/2.2/sxml/upstream/SXML-tree-trans.scm +249 -0
  671. data/share/guile/2.2/sxml/upstream/SXPath-old.scm +1216 -0
  672. data/share/guile/2.2/sxml/upstream/assert.scm +35 -0
  673. data/share/guile/2.2/sxml/upstream/input-parse.scm +326 -0
  674. data/share/guile/2.2/sxml/xpath.scm +493 -0
  675. data/share/guile/2.2/system/base/ck.scm +55 -0
  676. data/share/guile/2.2/system/base/compile.scm +282 -0
  677. data/share/guile/2.2/system/base/lalr.scm +51 -0
  678. data/share/guile/2.2/system/base/lalr.upstream.scm +2096 -0
  679. data/share/guile/2.2/system/base/language.scm +119 -0
  680. data/share/guile/2.2/system/base/message.scm +238 -0
  681. data/share/guile/2.2/system/base/pmatch.scm +68 -0
  682. data/share/guile/2.2/system/base/syntax.scm +299 -0
  683. data/share/guile/2.2/system/base/target.scm +152 -0
  684. data/share/guile/2.2/system/base/types.scm +561 -0
  685. data/share/guile/2.2/system/foreign-object.scm +91 -0
  686. data/share/guile/2.2/system/foreign.scm +200 -0
  687. data/share/guile/2.2/system/repl/command.scm +946 -0
  688. data/share/guile/2.2/system/repl/common.scm +263 -0
  689. data/share/guile/2.2/system/repl/coop-server.scm +200 -0
  690. data/share/guile/2.2/system/repl/debug.scm +210 -0
  691. data/share/guile/2.2/system/repl/describe.scm +347 -0
  692. data/share/guile/2.2/system/repl/error-handling.scm +183 -0
  693. data/share/guile/2.2/system/repl/repl.scm +233 -0
  694. data/share/guile/2.2/system/repl/server.scm +332 -0
  695. data/share/guile/2.2/system/syntax.scm +33 -0
  696. data/share/guile/2.2/system/vm/assembler.scm +2614 -0
  697. data/share/guile/2.2/system/vm/coverage.scm +351 -0
  698. data/share/guile/2.2/system/vm/debug.scm +766 -0
  699. data/share/guile/2.2/system/vm/disassembler.scm +658 -0
  700. data/share/guile/2.2/system/vm/dwarf.scm +1852 -0
  701. data/share/guile/2.2/system/vm/elf.scm +1042 -0
  702. data/share/guile/2.2/system/vm/frame.scm +485 -0
  703. data/share/guile/2.2/system/vm/inspect.scm +188 -0
  704. data/share/guile/2.2/system/vm/linker.scm +732 -0
  705. data/share/guile/2.2/system/vm/loader.scm +27 -0
  706. data/share/guile/2.2/system/vm/program.scm +312 -0
  707. data/share/guile/2.2/system/vm/trace.scm +121 -0
  708. data/share/guile/2.2/system/vm/trap-state.scm +302 -0
  709. data/share/guile/2.2/system/vm/traps.scm +608 -0
  710. data/share/guile/2.2/system/vm/vm.scm +32 -0
  711. data/share/guile/2.2/system/xref.scm +369 -0
  712. data/share/guile/2.2/texinfo/docbook.scm +240 -0
  713. data/share/guile/2.2/texinfo/html.scm +279 -0
  714. data/share/guile/2.2/texinfo/indexing.scm +75 -0
  715. data/share/guile/2.2/texinfo/plain-text.scm +322 -0
  716. data/share/guile/2.2/texinfo/reflection.scm +585 -0
  717. data/share/guile/2.2/texinfo/serialize.scm +300 -0
  718. data/share/guile/2.2/texinfo/string-utils.scm +410 -0
  719. data/share/guile/2.2/texinfo.scm +1263 -0
  720. data/share/guile/2.2/web/client.scm +513 -0
  721. data/share/guile/2.2/web/http.scm +2043 -0
  722. data/share/guile/2.2/web/request.scm +326 -0
  723. data/share/guile/2.2/web/response.scm +379 -0
  724. data/share/guile/2.2/web/server/http.scm +183 -0
  725. data/share/guile/2.2/web/server.scm +397 -0
  726. data/share/guile/2.2/web/uri.scm +552 -0
  727. data/share/lilypond/2.24.1/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-8 +0 -0
  728. data/share/lilypond/2.24.1/fontconfig/188ac73a183f12857f63bb60a4a6d603-le64.cache-8 +0 -0
  729. data/share/lilypond/2.24.1/fontconfig/32b6488e5b8292a2e95c79d947e009e8-le64.cache-8 +0 -0
  730. data/share/lilypond/2.24.1/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-8 +0 -0
  731. data/share/lilypond/2.24.1/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-8 +0 -0
  732. data/share/lilypond/2.24.1/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-8 +0 -0
  733. data/share/lilypond/2.24.1/fontconfig/57e423e26b20ab21d0f2f29c145174c3-le64.cache-8 +0 -0
  734. data/share/lilypond/2.24.1/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-8 +0 -0
  735. data/share/lilypond/2.24.1/fontconfig/826f6b6ef79022e2eac8af26bf4b62f2-le64.cache-8 +0 -0
  736. data/share/lilypond/2.24.1/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-8 +0 -0
  737. data/share/lilypond/2.24.1/fontconfig/95530828ff6c81d309f8258d8d02a23e-le64.cache-8 +0 -0
  738. data/share/lilypond/2.24.1/fontconfig/CACHEDIR.TAG +4 -0
  739. data/share/lilypond/2.24.1/fontconfig/bf3b770c553c462765856025a94f1ce6-le64.cache-8 +0 -0
  740. data/share/lilypond/2.24.1/fontconfig/c855463f699352c367813e37f3f70ea7-le64.cache-8 +0 -0
  741. data/share/lilypond/2.24.1/fontconfig/d3e5c4ee2ceb1fc347f91d4cefc53bc0-le64.cache-8 +0 -0
  742. data/share/lilypond/2.24.1/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-8 +0 -0
  743. data/share/lilypond/2.24.1/fontconfig/d82eb4fd963d448e2fcb7d7b793b5df3-le64.cache-8 +0 -0
  744. data/share/lilypond/2.24.1/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-8 +0 -0
  745. data/share/lilypond/2.24.1/fontconfig/e52a45a1c8c8fe895fc0fc8c4e6999b8-le64.cache-8 +0 -0
  746. data/share/lilypond/2.24.1/fontconfig/f1f2465696798768e9653f19e17ccdc8-le64.cache-8 +0 -0
  747. data/share/lilypond/2.24.1/fonts/00-lilypond-fonts.conf +99 -0
  748. data/share/lilypond/2.24.1/fonts/99-lilypond-fonts.conf +28 -0
  749. data/share/lilypond/2.24.1/fonts/otf/C059-BdIta.otf +0 -0
  750. data/share/lilypond/2.24.1/fonts/otf/C059-Bold.otf +0 -0
  751. data/share/lilypond/2.24.1/fonts/otf/C059-Italic.otf +0 -0
  752. data/share/lilypond/2.24.1/fonts/otf/C059-Roman.otf +0 -0
  753. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Bold.otf +0 -0
  754. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-BoldItalic.otf +0 -0
  755. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Italic.otf +0 -0
  756. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Regular.otf +0 -0
  757. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Bold.otf +0 -0
  758. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-BoldItalic.otf +0 -0
  759. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Italic.otf +0 -0
  760. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Regular.otf +0 -0
  761. data/share/lilypond/2.24.1/fonts/otf/emmentaler-11.otf +0 -0
  762. data/share/lilypond/2.24.1/fonts/otf/emmentaler-13.otf +0 -0
  763. data/share/lilypond/2.24.1/fonts/otf/emmentaler-14.otf +0 -0
  764. data/share/lilypond/2.24.1/fonts/otf/emmentaler-16.otf +0 -0
  765. data/share/lilypond/2.24.1/fonts/otf/emmentaler-18.otf +0 -0
  766. data/share/lilypond/2.24.1/fonts/otf/emmentaler-20.otf +0 -0
  767. data/share/lilypond/2.24.1/fonts/otf/emmentaler-23.otf +0 -0
  768. data/share/lilypond/2.24.1/fonts/otf/emmentaler-26.otf +0 -0
  769. data/share/lilypond/2.24.1/fonts/otf/emmentaler-brace.otf +0 -0
  770. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bold.otf +0 -0
  771. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bolditalic.otf +0 -0
  772. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-italic.otf +0 -0
  773. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-regular.otf +0 -0
  774. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bold.otf +0 -0
  775. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bolditalic.otf +0 -0
  776. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-italic.otf +0 -0
  777. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-regular.otf +0 -0
  778. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bold.otf +0 -0
  779. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bolditalic.otf +0 -0
  780. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-italic.otf +0 -0
  781. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-regular.otf +0 -0
  782. data/share/lilypond/2.24.1/fonts/source/common-modules-and-initialization.mf +26 -0
  783. data/share/lilypond/2.24.1/fonts/source/debugging-settings.mf +14 -0
  784. data/share/lilypond/2.24.1/fonts/source/declare-autometric-parameters.mf +9 -0
  785. data/share/lilypond/2.24.1/fonts/source/feta-accidentals.mf +58 -0
  786. data/share/lilypond/2.24.1/fonts/source/feta-accordion.mf +575 -0
  787. data/share/lilypond/2.24.1/fonts/source/feta-alphabet-generic.mf +16 -0
  788. data/share/lilypond/2.24.1/fonts/source/feta-alphabet11.mf +6 -0
  789. data/share/lilypond/2.24.1/fonts/source/feta-alphabet13.mf +6 -0
  790. data/share/lilypond/2.24.1/fonts/source/feta-alphabet14.mf +6 -0
  791. data/share/lilypond/2.24.1/fonts/source/feta-alphabet16.mf +6 -0
  792. data/share/lilypond/2.24.1/fonts/source/feta-alphabet18.mf +6 -0
  793. data/share/lilypond/2.24.1/fonts/source/feta-alphabet20.mf +6 -0
  794. data/share/lilypond/2.24.1/fonts/source/feta-alphabet23.mf +6 -0
  795. data/share/lilypond/2.24.1/fonts/source/feta-alphabet26.mf +6 -0
  796. data/share/lilypond/2.24.1/fonts/source/feta-arrow.mf +114 -0
  797. data/share/lilypond/2.24.1/fonts/source/feta-arrowheads.mf +171 -0
  798. data/share/lilypond/2.24.1/fonts/source/feta-autometric.mf +303 -0
  799. data/share/lilypond/2.24.1/fonts/source/feta-braces-a.mf +6 -0
  800. data/share/lilypond/2.24.1/fonts/source/feta-braces-b.mf +6 -0
  801. data/share/lilypond/2.24.1/fonts/source/feta-braces-c.mf +6 -0
  802. data/share/lilypond/2.24.1/fonts/source/feta-braces-d.mf +6 -0
  803. data/share/lilypond/2.24.1/fonts/source/feta-braces-e.mf +6 -0
  804. data/share/lilypond/2.24.1/fonts/source/feta-braces-f.mf +6 -0
  805. data/share/lilypond/2.24.1/fonts/source/feta-braces-g.mf +6 -0
  806. data/share/lilypond/2.24.1/fonts/source/feta-braces-generic.mf +47 -0
  807. data/share/lilypond/2.24.1/fonts/source/feta-braces-h.mf +6 -0
  808. data/share/lilypond/2.24.1/fonts/source/feta-braces-i.mf +6 -0
  809. data/share/lilypond/2.24.1/fonts/source/feta-braces.mf +125 -0
  810. data/share/lilypond/2.24.1/fonts/source/feta-brackettips.mf +100 -0
  811. data/share/lilypond/2.24.1/fonts/source/feta-clefs.mf +963 -0
  812. data/share/lilypond/2.24.1/fonts/source/feta-dots.mf +37 -0
  813. data/share/lilypond/2.24.1/fonts/source/feta-dynamics.mf +891 -0
  814. data/share/lilypond/2.24.1/fonts/source/feta-flags-generic.mf +17 -0
  815. data/share/lilypond/2.24.1/fonts/source/feta-flags.mf +926 -0
  816. data/share/lilypond/2.24.1/fonts/source/feta-flags11.mf +6 -0
  817. data/share/lilypond/2.24.1/fonts/source/feta-flags13.mf +6 -0
  818. data/share/lilypond/2.24.1/fonts/source/feta-flags14.mf +6 -0
  819. data/share/lilypond/2.24.1/fonts/source/feta-flags16.mf +6 -0
  820. data/share/lilypond/2.24.1/fonts/source/feta-flags18.mf +6 -0
  821. data/share/lilypond/2.24.1/fonts/source/feta-flags20.mf +6 -0
  822. data/share/lilypond/2.24.1/fonts/source/feta-flags23.mf +6 -0
  823. data/share/lilypond/2.24.1/fonts/source/feta-flags26.mf +6 -0
  824. data/share/lilypond/2.24.1/fonts/source/feta-flats.mf +668 -0
  825. data/share/lilypond/2.24.1/fonts/source/feta-macros.mf +506 -0
  826. data/share/lilypond/2.24.1/fonts/source/feta-naturals.mf +223 -0
  827. data/share/lilypond/2.24.1/fonts/source/feta-noteheads-generic.mf +17 -0
  828. data/share/lilypond/2.24.1/fonts/source/feta-noteheads.mf +2642 -0
  829. data/share/lilypond/2.24.1/fonts/source/feta-noteheads11.mf +6 -0
  830. data/share/lilypond/2.24.1/fonts/source/feta-noteheads13.mf +6 -0
  831. data/share/lilypond/2.24.1/fonts/source/feta-noteheads14.mf +6 -0
  832. data/share/lilypond/2.24.1/fonts/source/feta-noteheads16.mf +6 -0
  833. data/share/lilypond/2.24.1/fonts/source/feta-noteheads18.mf +6 -0
  834. data/share/lilypond/2.24.1/fonts/source/feta-noteheads20.mf +6 -0
  835. data/share/lilypond/2.24.1/fonts/source/feta-noteheads23.mf +6 -0
  836. data/share/lilypond/2.24.1/fonts/source/feta-noteheads26.mf +6 -0
  837. data/share/lilypond/2.24.1/fonts/source/feta-numbers.mf +1677 -0
  838. data/share/lilypond/2.24.1/fonts/source/feta-other-generic.mf +27 -0
  839. data/share/lilypond/2.24.1/fonts/source/feta-params.mf +323 -0
  840. data/share/lilypond/2.24.1/fonts/source/feta-parenthesis.mf +63 -0
  841. data/share/lilypond/2.24.1/fonts/source/feta-pedals.mf +355 -0
  842. data/share/lilypond/2.24.1/fonts/source/feta-rests.mf +890 -0
  843. data/share/lilypond/2.24.1/fonts/source/feta-scripts.mf +2206 -0
  844. data/share/lilypond/2.24.1/fonts/source/feta-sharps.mf +524 -0
  845. data/share/lilypond/2.24.1/fonts/source/feta-sori-koron.mf +325 -0
  846. data/share/lilypond/2.24.1/fonts/source/feta-ties.mf +72 -0
  847. data/share/lilypond/2.24.1/fonts/source/feta-timesignatures.mf +119 -0
  848. data/share/lilypond/2.24.1/fonts/source/feta-trills.mf +321 -0
  849. data/share/lilypond/2.24.1/fonts/source/feta11.mf +6 -0
  850. data/share/lilypond/2.24.1/fonts/source/feta13.mf +6 -0
  851. data/share/lilypond/2.24.1/fonts/source/feta14.mf +6 -0
  852. data/share/lilypond/2.24.1/fonts/source/feta16.mf +6 -0
  853. data/share/lilypond/2.24.1/fonts/source/feta18.mf +6 -0
  854. data/share/lilypond/2.24.1/fonts/source/feta20.mf +7 -0
  855. data/share/lilypond/2.24.1/fonts/source/feta23.mf +6 -0
  856. data/share/lilypond/2.24.1/fonts/source/feta26.mf +6 -0
  857. data/share/lilypond/2.24.1/fonts/source/parmesan-accidentals.mf +483 -0
  858. data/share/lilypond/2.24.1/fonts/source/parmesan-clefs.mf +1636 -0
  859. data/share/lilypond/2.24.1/fonts/source/parmesan-custodes.mf +503 -0
  860. data/share/lilypond/2.24.1/fonts/source/parmesan-dots.mf +62 -0
  861. data/share/lilypond/2.24.1/fonts/source/parmesan-flags.mf +319 -0
  862. data/share/lilypond/2.24.1/fonts/source/parmesan-macros.mf +225 -0
  863. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads-generic.mf +16 -0
  864. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads.mf +2191 -0
  865. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads11.mf +6 -0
  866. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads13.mf +6 -0
  867. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads14.mf +6 -0
  868. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads16.mf +6 -0
  869. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads18.mf +6 -0
  870. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads20.mf +6 -0
  871. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads23.mf +6 -0
  872. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads26.mf +6 -0
  873. data/share/lilypond/2.24.1/fonts/source/parmesan-other-generic.mf +24 -0
  874. data/share/lilypond/2.24.1/fonts/source/parmesan-rests.mf +428 -0
  875. data/share/lilypond/2.24.1/fonts/source/parmesan-scripts.mf +284 -0
  876. data/share/lilypond/2.24.1/fonts/source/parmesan-timesignatures.mf +402 -0
  877. data/share/lilypond/2.24.1/fonts/source/parmesan11.mf +6 -0
  878. data/share/lilypond/2.24.1/fonts/source/parmesan13.mf +6 -0
  879. data/share/lilypond/2.24.1/fonts/source/parmesan14.mf +6 -0
  880. data/share/lilypond/2.24.1/fonts/source/parmesan16.mf +6 -0
  881. data/share/lilypond/2.24.1/fonts/source/parmesan18.mf +6 -0
  882. data/share/lilypond/2.24.1/fonts/source/parmesan20.mf +6 -0
  883. data/share/lilypond/2.24.1/fonts/source/parmesan23.mf +6 -0
  884. data/share/lilypond/2.24.1/fonts/source/parmesan26.mf +6 -0
  885. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.svg +2525 -0
  886. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.woff +0 -0
  887. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.svg +2530 -0
  888. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.woff +0 -0
  889. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.svg +2526 -0
  890. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.woff +0 -0
  891. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.svg +2523 -0
  892. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.woff +0 -0
  893. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.svg +2519 -0
  894. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.woff +0 -0
  895. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.svg +2512 -0
  896. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.woff +0 -0
  897. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.svg +2506 -0
  898. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.woff +0 -0
  899. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.svg +2510 -0
  900. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.woff +0 -0
  901. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.svg +1757 -0
  902. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.woff +0 -0
  903. data/share/lilypond/2.24.1/ly/Welcome_to_LilyPond.ly +45 -0
  904. data/share/lilypond/2.24.1/ly/arabic.ly +185 -0
  905. data/share/lilypond/2.24.1/ly/articulate.ly +1013 -0
  906. data/share/lilypond/2.24.1/ly/bagpipe.ly +368 -0
  907. data/share/lilypond/2.24.1/ly/base-tkit.ly +135 -0
  908. data/share/lilypond/2.24.1/ly/catalan.ly +23 -0
  909. data/share/lilypond/2.24.1/ly/chord-modifiers-init.ly +63 -0
  910. data/share/lilypond/2.24.1/ly/chord-repetition-init.ly +60 -0
  911. data/share/lilypond/2.24.1/ly/context-mods-init.ly +119 -0
  912. data/share/lilypond/2.24.1/ly/declarations-init.ly +167 -0
  913. data/share/lilypond/2.24.1/ly/deutsch.ly +23 -0
  914. data/share/lilypond/2.24.1/ly/drumpitch-init.ly +366 -0
  915. data/share/lilypond/2.24.1/ly/dynamic-scripts-init.ly +54 -0
  916. data/share/lilypond/2.24.1/ly/english.ly +23 -0
  917. data/share/lilypond/2.24.1/ly/engraver-init.ly +1619 -0
  918. data/share/lilypond/2.24.1/ly/espanol.ly +23 -0
  919. data/share/lilypond/2.24.1/ly/event-listener.ly +241 -0
  920. data/share/lilypond/2.24.1/ly/festival.ly +38 -0
  921. data/share/lilypond/2.24.1/ly/generate-documentation.ly +7 -0
  922. data/share/lilypond/2.24.1/ly/grace-init.ly +56 -0
  923. data/share/lilypond/2.24.1/ly/graphviz-init.ly +174 -0
  924. data/share/lilypond/2.24.1/ly/gregorian.ly +268 -0
  925. data/share/lilypond/2.24.1/ly/guile-debugger.ly +55 -0
  926. data/share/lilypond/2.24.1/ly/hel-arabic.ly +307 -0
  927. data/share/lilypond/2.24.1/ly/init.ly +96 -0
  928. data/share/lilypond/2.24.1/ly/italiano.ly +23 -0
  929. data/share/lilypond/2.24.1/ly/lilypond-book-preamble.ly +47 -0
  930. data/share/lilypond/2.24.1/ly/lyrics-tkit.ly +68 -0
  931. data/share/lilypond/2.24.1/ly/makam.ly +166 -0
  932. data/share/lilypond/2.24.1/ly/midi-init.ly +59 -0
  933. data/share/lilypond/2.24.1/ly/music-functions-init.ly +2254 -0
  934. data/share/lilypond/2.24.1/ly/nederlands.ly +23 -0
  935. data/share/lilypond/2.24.1/ly/norsk.ly +23 -0
  936. data/share/lilypond/2.24.1/ly/paper-defaults-init.ly +188 -0
  937. data/share/lilypond/2.24.1/ly/performer-init.ly +398 -0
  938. data/share/lilypond/2.24.1/ly/persian.ly +335 -0
  939. data/share/lilypond/2.24.1/ly/piano-tkit.ly +61 -0
  940. data/share/lilypond/2.24.1/ly/portugues.ly +23 -0
  941. data/share/lilypond/2.24.1/ly/predefined-fretboards-init.ly +78 -0
  942. data/share/lilypond/2.24.1/ly/predefined-guitar-fretboards.ly +506 -0
  943. data/share/lilypond/2.24.1/ly/predefined-guitar-ninth-fretboards.ly +75 -0
  944. data/share/lilypond/2.24.1/ly/predefined-mandolin-fretboards.ly +876 -0
  945. data/share/lilypond/2.24.1/ly/predefined-ukulele-fretboards.ly +1285 -0
  946. data/share/lilypond/2.24.1/ly/property-init.ly +858 -0
  947. data/share/lilypond/2.24.1/ly/satb.ly +214 -0
  948. data/share/lilypond/2.24.1/ly/scale-definitions-init.ly +117 -0
  949. data/share/lilypond/2.24.1/ly/scheme-sandbox.ly +39 -0
  950. data/share/lilypond/2.24.1/ly/script-init.ly +94 -0
  951. data/share/lilypond/2.24.1/ly/spanners-init.ly +146 -0
  952. data/share/lilypond/2.24.1/ly/ssaattbb.ly +335 -0
  953. data/share/lilypond/2.24.1/ly/staff-tkit.ly +182 -0
  954. data/share/lilypond/2.24.1/ly/string-tunings-init.ly +94 -0
  955. data/share/lilypond/2.24.1/ly/suomi.ly +23 -0
  956. data/share/lilypond/2.24.1/ly/svenska.ly +23 -0
  957. data/share/lilypond/2.24.1/ly/swing.ly +362 -0
  958. data/share/lilypond/2.24.1/ly/text-replacements.ly +150 -0
  959. data/share/lilypond/2.24.1/ly/titling-init.ly +150 -0
  960. data/share/lilypond/2.24.1/ly/toc-init.ly +182 -0
  961. data/share/lilypond/2.24.1/ly/turkish-makam.ly +609 -0
  962. data/share/lilypond/2.24.1/ly/vlaams.ly +23 -0
  963. data/share/lilypond/2.24.1/ly/vocal-tkit.ly +103 -0
  964. data/share/lilypond/2.24.1/ly/voice-tkit.ly +34 -0
  965. data/share/lilypond/2.24.1/ps/encodingdefs.ps +2611 -0
  966. data/share/lilypond/2.24.1/ps/lilyponddefs.ps +49 -0
  967. data/share/lilypond/2.24.1/ps/music-drawing-routines.ps +329 -0
  968. data/share/lilypond/2.24.1/python/__pycache__/book_base.cpython-310.pyc +0 -0
  969. data/share/lilypond/2.24.1/python/__pycache__/book_docbook.cpython-310.pyc +0 -0
  970. data/share/lilypond/2.24.1/python/__pycache__/book_html.cpython-310.pyc +0 -0
  971. data/share/lilypond/2.24.1/python/__pycache__/book_latex.cpython-310.pyc +0 -0
  972. data/share/lilypond/2.24.1/python/__pycache__/book_snippets.cpython-310.pyc +0 -0
  973. data/share/lilypond/2.24.1/python/__pycache__/book_texinfo.cpython-310.pyc +0 -0
  974. data/share/lilypond/2.24.1/python/__pycache__/convertrules.cpython-310.pyc +0 -0
  975. data/share/lilypond/2.24.1/python/__pycache__/langdefs.cpython-310.pyc +0 -0
  976. data/share/lilypond/2.24.1/python/__pycache__/lilylib.cpython-310.pyc +0 -0
  977. data/share/lilypond/2.24.1/python/__pycache__/midi.cpython-310.pyc +0 -0
  978. data/share/lilypond/2.24.1/python/__pycache__/musicexp.cpython-310.pyc +0 -0
  979. data/share/lilypond/2.24.1/python/__pycache__/musicxml.cpython-310.pyc +0 -0
  980. data/share/lilypond/2.24.1/python/__pycache__/musicxml2ly_conversion.cpython-310.pyc +0 -0
  981. data/share/lilypond/2.24.1/python/__pycache__/utilities.cpython-310.pyc +0 -0
  982. data/share/lilypond/2.24.1/python/book_base.py +331 -0
  983. data/share/lilypond/2.24.1/python/book_docbook.py +154 -0
  984. data/share/lilypond/2.24.1/python/book_html.py +178 -0
  985. data/share/lilypond/2.24.1/python/book_latex.py +373 -0
  986. data/share/lilypond/2.24.1/python/book_snippets.py +1052 -0
  987. data/share/lilypond/2.24.1/python/book_texinfo.py +437 -0
  988. data/share/lilypond/2.24.1/python/convertrules.py +4764 -0
  989. data/share/lilypond/2.24.1/python/langdefs.py +131 -0
  990. data/share/lilypond/2.24.1/python/lilylib.py +141 -0
  991. data/share/lilypond/2.24.1/python/midi.py +212 -0
  992. data/share/lilypond/2.24.1/python/musicexp.py +2781 -0
  993. data/share/lilypond/2.24.1/python/musicxml.py +1905 -0
  994. data/share/lilypond/2.24.1/python/musicxml2ly_conversion.py +80 -0
  995. data/share/lilypond/2.24.1/python/utilities.py +280 -0
  996. data/share/lilypond/2.24.1/scm/lily/accreg.scm +579 -0
  997. data/share/lilypond/2.24.1/scm/lily/auto-beam.scm +163 -0
  998. data/share/lilypond/2.24.1/scm/lily/autochange.scm +100 -0
  999. data/share/lilypond/2.24.1/scm/lily/backend-library.scm +593 -0
  1000. data/share/lilypond/2.24.1/scm/lily/bar-line.scm +1281 -0
  1001. data/share/lilypond/2.24.1/scm/lily/breath.scm +74 -0
  1002. data/share/lilypond/2.24.1/scm/lily/c++.scm +174 -0
  1003. data/share/lilypond/2.24.1/scm/lily/chord-entry.scm +278 -0
  1004. data/share/lilypond/2.24.1/scm/lily/chord-ignatzek-names.scm +304 -0
  1005. data/share/lilypond/2.24.1/scm/lily/chord-name.scm +217 -0
  1006. data/share/lilypond/2.24.1/scm/lily/clip-region.scm +87 -0
  1007. data/share/lilypond/2.24.1/scm/lily/color.scm +757 -0
  1008. data/share/lilypond/2.24.1/scm/lily/curried-definitions.scm +68 -0
  1009. data/share/lilypond/2.24.1/scm/lily/define-context-properties.scm +939 -0
  1010. data/share/lilypond/2.24.1/scm/lily/define-event-classes.scm +142 -0
  1011. data/share/lilypond/2.24.1/scm/lily/define-grob-interfaces.scm +640 -0
  1012. data/share/lilypond/2.24.1/scm/lily/define-grob-properties.scm +1647 -0
  1013. data/share/lilypond/2.24.1/scm/lily/define-grobs.scm +4027 -0
  1014. data/share/lilypond/2.24.1/scm/lily/define-markup-commands.scm +5737 -0
  1015. data/share/lilypond/2.24.1/scm/lily/define-music-callbacks.scm +257 -0
  1016. data/share/lilypond/2.24.1/scm/lily/define-music-display-methods.scm +1350 -0
  1017. data/share/lilypond/2.24.1/scm/lily/define-music-properties.scm +242 -0
  1018. data/share/lilypond/2.24.1/scm/lily/define-music-types.scm +983 -0
  1019. data/share/lilypond/2.24.1/scm/lily/define-note-names.scm +1421 -0
  1020. data/share/lilypond/2.24.1/scm/lily/define-stencil-commands.scm +71 -0
  1021. data/share/lilypond/2.24.1/scm/lily/define-woodwind-diagrams.scm +1215 -0
  1022. data/share/lilypond/2.24.1/scm/lily/display-lily.scm +315 -0
  1023. data/share/lilypond/2.24.1/scm/lily/display-woodwind-diagrams.scm +1985 -0
  1024. data/share/lilypond/2.24.1/scm/lily/document-backend.scm +307 -0
  1025. data/share/lilypond/2.24.1/scm/lily/document-context-mods.scm +98 -0
  1026. data/share/lilypond/2.24.1/scm/lily/document-functions.scm +169 -0
  1027. data/share/lilypond/2.24.1/scm/lily/document-identifiers.scm +76 -0
  1028. data/share/lilypond/2.24.1/scm/lily/document-markup.scm +158 -0
  1029. data/share/lilypond/2.24.1/scm/lily/document-music.scm +146 -0
  1030. data/share/lilypond/2.24.1/scm/lily/document-outside-staff-priorities.scm +40 -0
  1031. data/share/lilypond/2.24.1/scm/lily/document-paper-sizes.scm +71 -0
  1032. data/share/lilypond/2.24.1/scm/lily/document-translation.scm +318 -0
  1033. data/share/lilypond/2.24.1/scm/lily/document-type-predicates.scm +85 -0
  1034. data/share/lilypond/2.24.1/scm/lily/documentation-generate.scm +259 -0
  1035. data/share/lilypond/2.24.1/scm/lily/documentation-lib.scm +207 -0
  1036. data/share/lilypond/2.24.1/scm/lily/file-cache.scm +28 -0
  1037. data/share/lilypond/2.24.1/scm/lily/flag-styles.scm +249 -0
  1038. data/share/lilypond/2.24.1/scm/lily/font-encodings.scm +1242 -0
  1039. data/share/lilypond/2.24.1/scm/lily/font.scm +303 -0
  1040. data/share/lilypond/2.24.1/scm/lily/framework-cairo.scm +26 -0
  1041. data/share/lilypond/2.24.1/scm/lily/framework-ps.scm +896 -0
  1042. data/share/lilypond/2.24.1/scm/lily/framework-svg.scm +172 -0
  1043. data/share/lilypond/2.24.1/scm/lily/fret-diagrams.scm +1261 -0
  1044. data/share/lilypond/2.24.1/scm/lily/graphviz.scm +78 -0
  1045. data/share/lilypond/2.24.1/scm/lily/guile-debugger.scm +90 -0
  1046. data/share/lilypond/2.24.1/scm/lily/harp-pedals.scm +172 -0
  1047. data/share/lilypond/2.24.1/scm/lily/hyphenate-internal-words.scm +51 -0
  1048. data/share/lilypond/2.24.1/scm/lily/layout-beam.scm +73 -0
  1049. data/share/lilypond/2.24.1/scm/lily/layout-slur.scm +45 -0
  1050. data/share/lilypond/2.24.1/scm/lily/lily-library.scm +1446 -0
  1051. data/share/lilypond/2.24.1/scm/lily/lily-sort.scm +116 -0
  1052. data/share/lilypond/2.24.1/scm/lily/lily.scm +929 -0
  1053. data/share/lilypond/2.24.1/scm/lily/ly-syntax-constructors.scm +374 -0
  1054. data/share/lilypond/2.24.1/scm/lily/markup-macros.scm +493 -0
  1055. data/share/lilypond/2.24.1/scm/lily/markup.scm +126 -0
  1056. data/share/lilypond/2.24.1/scm/lily/midi.scm +258 -0
  1057. data/share/lilypond/2.24.1/scm/lily/modal-transforms.scm +337 -0
  1058. data/share/lilypond/2.24.1/scm/lily/music-functions.scm +2878 -0
  1059. data/share/lilypond/2.24.1/scm/lily/output-lib.scm +3377 -0
  1060. data/share/lilypond/2.24.1/scm/lily/output-ps.scm +335 -0
  1061. data/share/lilypond/2.24.1/scm/lily/output-svg.scm +684 -0
  1062. data/share/lilypond/2.24.1/scm/lily/page.scm +321 -0
  1063. data/share/lilypond/2.24.1/scm/lily/paper-system.scm +271 -0
  1064. data/share/lilypond/2.24.1/scm/lily/paper.scm +376 -0
  1065. data/share/lilypond/2.24.1/scm/lily/parser-clef.scm +205 -0
  1066. data/share/lilypond/2.24.1/scm/lily/parser-ly-from-scheme.scm +170 -0
  1067. data/share/lilypond/2.24.1/scm/lily/part-combiner.scm +998 -0
  1068. data/share/lilypond/2.24.1/scm/lily/predefined-fretboards.scm +54 -0
  1069. data/share/lilypond/2.24.1/scm/lily/ps-to-png.scm +182 -0
  1070. data/share/lilypond/2.24.1/scm/lily/scheme-engravers.scm +1813 -0
  1071. data/share/lilypond/2.24.1/scm/lily/scheme-performers.scm +126 -0
  1072. data/share/lilypond/2.24.1/scm/lily/script.scm +416 -0
  1073. data/share/lilypond/2.24.1/scm/lily/skyline.scm +25 -0
  1074. data/share/lilypond/2.24.1/scm/lily/song-util.scm +191 -0
  1075. data/share/lilypond/2.24.1/scm/lily/song.scm +853 -0
  1076. data/share/lilypond/2.24.1/scm/lily/stencil.scm +998 -0
  1077. data/share/lilypond/2.24.1/scm/lily/tablature.scm +392 -0
  1078. data/share/lilypond/2.24.1/scm/lily/time-signature-settings.scm +473 -0
  1079. data/share/lilypond/2.24.1/scm/lily/time-signature.scm +35 -0
  1080. data/share/lilypond/2.24.1/scm/lily/titling.scm +99 -0
  1081. data/share/lilypond/2.24.1/scm/lily/to-xml.scm +254 -0
  1082. data/share/lilypond/2.24.1/scm/lily/translation-functions.scm +1169 -0
  1083. data/share/lilypond/2.24.1/vim/compiler/lilypond.vim +36 -0
  1084. data/share/lilypond/2.24.1/vim/ftdetect/lilypond.vim +4 -0
  1085. data/share/lilypond/2.24.1/vim/ftplugin/lilypond.vim +91 -0
  1086. data/share/lilypond/2.24.1/vim/indent/lilypond.vim +79 -0
  1087. data/share/lilypond/2.24.1/vim/syntax/lilypond-words +1408 -0
  1088. data/share/lilypond/2.24.1/vim/syntax/lilypond-words.vim +3 -0
  1089. data/share/lilypond/2.24.1/vim/syntax/lilypond.vim +104 -0
  1090. data/share/locale/ca/LC_MESSAGES/lilypond.mo +0 -0
  1091. data/share/locale/cs/LC_MESSAGES/lilypond.mo +0 -0
  1092. data/share/locale/da/LC_MESSAGES/lilypond.mo +0 -0
  1093. data/share/locale/de/LC_MESSAGES/lilypond.mo +0 -0
  1094. data/share/locale/el/LC_MESSAGES/lilypond.mo +0 -0
  1095. data/share/locale/eo/LC_MESSAGES/lilypond.mo +0 -0
  1096. data/share/locale/es/LC_MESSAGES/lilypond.mo +0 -0
  1097. data/share/locale/fi/LC_MESSAGES/lilypond.mo +0 -0
  1098. data/share/locale/fr/LC_MESSAGES/lilypond.mo +0 -0
  1099. data/share/locale/it/LC_MESSAGES/lilypond.mo +0 -0
  1100. data/share/locale/ja/LC_MESSAGES/lilypond.mo +0 -0
  1101. data/share/locale/nl/LC_MESSAGES/lilypond.mo +0 -0
  1102. data/share/locale/ru/LC_MESSAGES/lilypond.mo +0 -0
  1103. data/share/locale/sv/LC_MESSAGES/lilypond.mo +0 -0
  1104. data/share/locale/tr/LC_MESSAGES/lilypond.mo +0 -0
  1105. data/share/locale/uk/LC_MESSAGES/lilypond.mo +0 -0
  1106. data/share/locale/vi/LC_MESSAGES/lilypond.mo +0 -0
  1107. data/share/locale/zh_CN/LC_MESSAGES/lilypond.mo +0 -0
  1108. data/share/locale/zh_TW/LC_MESSAGES/lilypond.mo +0 -0
  1109. metadata +1108 -1
@@ -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
+