packages.scm 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Mike Sperber, Marcus Crestani, Harald Glab-Plhak, Robert Ransom
  3. (define-interface r6rs-base-comparisons-interface
  4. (export symbol=? boolean=?
  5. char=? char<? char>? char<=? char>=?
  6. string=? string<? string>? string<=? string>=?))
  7. (define-structure r6rs-base-comparisons r6rs-base-comparisons-interface
  8. (open (modify scheme (hide char=? char<? char>? char<=? char>=?
  9. string=? string<? string>? string<=? string>=?))
  10. (modify scheme (prefix prim:))
  11. exceptions
  12. r6rs-n-ary-comparisons)
  13. (files base-comparison))
  14. (define-interface r6rs-records-procedural-interface
  15. (export make-record-type-descriptor
  16. record-type-descriptor?
  17. make-record-constructor-descriptor
  18. record-constructor record-predicate
  19. record-accessor record-mutator))
  20. (define-interface r6rs-records-inspection-interface
  21. (export record-type-name
  22. record-type-parent
  23. record-type-sealed?
  24. record-type-uid
  25. record-type-generative?
  26. record-type-field-names
  27. record-type-opaque?
  28. record-field-mutable?
  29. record? record-rtd))
  30. (define-interface r6rs-records-internal-interface
  31. (export retrofit-record-type!
  32. nongenerative-record-types
  33. delete-nongenerative-record-type))
  34. (define-structures ((r6rs-records-procedural r6rs-records-procedural-interface)
  35. (r6rs-records-inspection r6rs-records-inspection-interface)
  36. (r6rs-records-internal r6rs-records-internal-interface))
  37. (open scheme
  38. (subset util (unspecific))
  39. (subset features (make-immutable!))
  40. (modify record-types (hide record-accessor record-constructor))
  41. define-record-types
  42. (modify records (prefix primitive:))
  43. r6rs-lists
  44. exceptions
  45. tables
  46. (subset command-state (user-context-accessor user-context-modifier))
  47. locks)
  48. (optimize auto-integrate)
  49. (files record-procedural))
  50. (define-structure r6rs-records-commands (export)
  51. (open scheme
  52. r6rs-records-procedural r6rs-records-inspection r6rs-records-internal
  53. (subset command-processor (define-user-command-syntax
  54. user-command-environment))
  55. (subset command-state (command-output))
  56. (subset environments (environment-define!)))
  57. (files record-command))
  58. (define-interface r6rs-records-syntactic-interface
  59. (export ((define-record-type record-type-descriptor record-constructor-descriptor)
  60. :syntax)))
  61. (define-interface r6rs-records-syntactic-internal-interface
  62. (export (define-retrofitted-record-type :syntax)))
  63. (define-structures ((r6rs-records-syntactic r6rs-records-syntactic-interface)
  64. (r6rs-records-syntactic-internal r6rs-records-syntactic-internal-interface))
  65. (open scheme
  66. (subset primitives (checked-record-ref checked-record-set! record))
  67. r6rs-records-procedural
  68. r6rs-records-internal
  69. loopholes types)
  70. (for-syntax (open scheme exceptions))
  71. (files record-syntactic))
  72. (define-interface r6rs-conditions-interface
  73. (export condition
  74. condition?
  75. simple-conditions
  76. condition-predicate
  77. condition-accessor
  78. define-condition-type
  79. (&condition :syntax)
  80. (&message :syntax)
  81. make-message-condition
  82. message-condition?
  83. condition-message
  84. (&warning :syntax)
  85. make-warning
  86. warning?
  87. (&serious :syntax)
  88. make-serious-condition
  89. serious-condition?
  90. (&error :syntax)
  91. make-error
  92. error?
  93. (&violation :syntax)
  94. make-violation
  95. violation?
  96. (&non-continuable :syntax)
  97. make-noncontinuable-violation
  98. non-continuable-violation?
  99. (&implementation-restriction :syntax)
  100. make-implementation-restriction-violation
  101. implementation-restriction-violation?
  102. (&lexical :syntax)
  103. make-lexical-violation
  104. lexical-violation?
  105. (&syntax :syntax)
  106. make-syntax-violation
  107. syntax-violation?
  108. (&undefined :syntax)
  109. make-undefined-violation
  110. undefined-violation?
  111. (&assertion :syntax)
  112. make-assertion-violation
  113. assertion-violation?
  114. (&irritants :syntax)
  115. make-irritants-condition
  116. irritants-condition?
  117. condition-irritants
  118. (&who :syntax)
  119. make-who-condition
  120. who-condition?
  121. condition-who))
  122. (define-structure r6rs-conditions r6rs-conditions-interface
  123. (open scheme
  124. r6rs-records-syntactic
  125. r6rs-records-syntactic-internal
  126. (subset record-types (define-record-discloser))
  127. (modify conditions (prefix rts:))
  128. (subset conditions (condition
  129. condition?
  130. simple-conditions
  131. condition-predicate
  132. condition-accessor
  133. make-message-condition
  134. message-condition?
  135. condition-message
  136. make-warning
  137. warning?
  138. make-serious-condition
  139. serious-condition?
  140. make-error
  141. error?
  142. make-violation
  143. violation?
  144. make-noncontinuable-violation
  145. non-continuable-violation?
  146. make-implementation-restriction-violation
  147. implementation-restriction-violation?
  148. make-lexical-violation
  149. lexical-violation?
  150. make-syntax-violation
  151. syntax-violation?
  152. make-undefined-violation
  153. undefined-violation?
  154. make-assertion-violation
  155. assertion-violation?
  156. make-irritants-condition
  157. irritants-condition?
  158. condition-irritants
  159. make-who-condition
  160. who-condition?
  161. condition-who)))
  162. (files condition))
  163. (define-interface r6rs-unicode-interface
  164. (compound-interface unicode-normalizations-interface
  165. (export char-titlecase
  166. char-title-case?
  167. char-foldcase
  168. string-upcase string-downcase
  169. string-foldcase
  170. string-titlecase)
  171. (export char-ci=? char-ci<? char-ci>? char-ci<=? char-ci>=?
  172. string-ci=? string-ci<? string-ci>? string-ci<=? string-ci>=?)
  173. (export char-general-category)))
  174. (define-structure r6rs-unicode r6rs-unicode-interface
  175. (open (modify scheme (hide char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>?
  176. string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>?))
  177. (modify scheme (prefix prim:))
  178. unicode-normalizations
  179. (subset unicode-char-maps (char-titlecase
  180. char-title-case?
  181. char-foldcase
  182. string-upcase string-downcase
  183. string-foldcase
  184. string-titlecase
  185. general-category-symbol))
  186. (modify unicode-char-maps
  187. (rename (char-general-category s48:char-general-category))
  188. (expose char-general-category))
  189. r6rs-n-ary-comparisons)
  190. (files unicode-comparison)
  191. (begin
  192. ;; R6RS uses a symbol instead of an enumeration
  193. (define (char-general-category c)
  194. (general-category-symbol (s48:char-general-category c)))))
  195. (define-interface r6rs-lists-interface
  196. (export find
  197. for-all exists
  198. filter partition
  199. fold-left fold-right
  200. remp remove remv remq
  201. memp member memv memq
  202. assp assoc assv assq
  203. cons*))
  204. (define-interface r6rs-enums-interface
  205. (export make-enumeration
  206. enum-set-universe
  207. enum-set-indexer
  208. enum-set-constructor
  209. enum-set->list
  210. enum-set-member?
  211. enum-set=?
  212. enum-set-subset?
  213. enum-set-union
  214. enum-set-intersection
  215. enum-set-difference
  216. enum-set-complement
  217. enum-set-projection
  218. (define-enumeration :syntax)))
  219. (define-structure r6rs-enums r6rs-enums-interface
  220. (open scheme
  221. big-util
  222. (modify enum-sets (prefix big:))
  223. (modify enum-sets-internal (prefix big:))
  224. constant-tables
  225. (subset tables (symbol-hash))
  226. (subset names (desyntaxify))
  227. code-quotation)
  228. (files enum))
  229. (define-interface r6rs-sorting-interface
  230. (export list-sort
  231. vector-sort
  232. vector-sort!))
  233. (define-structure r6rs-sorting r6rs-sorting-interface
  234. (open scheme
  235. (modify sorting (prefix olin:)))
  236. (begin
  237. (define list-sort olin:list-stable-sort)
  238. (define vector-sort olin:vector-stable-sort)
  239. (define vector-sort! olin:vector-sort!)))
  240. (define-structures ((r6rs-reader (export get-datum))
  241. (r6rs-reader-internals (export define-sharp-macro
  242. reading-error)))
  243. (open (modify scheme (hide read))
  244. conditions exceptions
  245. byte-vectors
  246. unicode-char-maps
  247. (subset primitives (make-immutable!))
  248. (subset silly (reverse-list->string)))
  249. (files reader)
  250. (optimize auto-integrate))
  251. (define-structure r6rs-reader-command (export read-form)
  252. (open (modify scheme (hide read))
  253. r6rs-reader
  254. r6rs-reader-internals
  255. conditions exceptions
  256. (subset command-processor (with-sharp-sharp current-sharp-sharp))
  257. nodes command-state)
  258. (files reader-command)
  259. (optimize auto-integrate))
  260. (define-structure r6rs-equal (export equal?)
  261. (open (modify scheme-level-1 (hide equal?))
  262. byte-vectors)
  263. (files equal)
  264. (optimize auto-integrate))
  265. (define-structure r6rs-control (export when unless case-lambda)
  266. (open scheme-level-2
  267. srfi-16)
  268. (files control))
  269. (define-interface r6rs-bytevectors-interface
  270. (export (endianness :syntax)
  271. native-endianness
  272. bytevector?
  273. make-bytevector
  274. bytevector-length
  275. bytevector=?
  276. bytevector-fill!
  277. bytevector-copy!
  278. bytevector-copy
  279. bytevector-u8-ref
  280. bytevector-u8-set!
  281. bytevector-s8-ref
  282. bytevector-s8-set!
  283. bytevector->u8-list
  284. u8-list->bytevector
  285. bytevector-uint-ref bytevector-sint-ref
  286. bytevector-uint-set! bytevector-sint-set!
  287. bytevector->uint-list bytevector->sint-list
  288. uint-list->bytevector sint-list->bytevector
  289. bytevector-u16-ref bytevector-s16-ref
  290. bytevector-u16-set! bytevector-s16-set!
  291. bytevector-u16-native-ref bytevector-s16-native-ref
  292. bytevector-u16-native-set! bytevector-s16-native-set!
  293. bytevector-u32-ref bytevector-s32-ref
  294. bytevector-u32-set! bytevector-s32-set!
  295. bytevector-u32-native-ref bytevector-s32-native-ref
  296. bytevector-u32-native-set! bytevector-s32-native-set!
  297. bytevector-u64-ref bytevector-s64-ref
  298. bytevector-u64-set! bytevector-s64-set!
  299. bytevector-u64-native-ref bytevector-s64-native-ref
  300. bytevector-u64-native-set! bytevector-s64-native-set!
  301. bytevector-ieee-single-native-ref
  302. bytevector-ieee-single-ref
  303. bytevector-ieee-single-native-set!
  304. bytevector-ieee-single-set!
  305. bytevector-ieee-double-native-ref
  306. bytevector-ieee-double-ref
  307. bytevector-ieee-double-native-set!
  308. bytevector-ieee-double-set!
  309. string->utf8 string->utf16
  310. string->utf32 utf8->string
  311. utf16->string utf32->string))
  312. (define-structure r6rs-hashtables r6rs-hashtables-interface
  313. (open scheme
  314. tlc-tables
  315. variable-argument-lists
  316. (modify features (hide string-hash))
  317. exceptions)
  318. (files hashtable))
  319. (define-structure r6rs-bytevectors r6rs-bytevectors-interface
  320. (open scheme
  321. r6rs-enums
  322. load-dynamic-externals
  323. external-calls
  324. byte-vectors
  325. variable-argument-lists
  326. text-codecs
  327. (modify encodings (prefix enc:))
  328. bitwise
  329. exceptions
  330. (subset primitives (copy-bytes! unspecific)))
  331. (files bytevector
  332. bytevector-ieee
  333. bytevector-string))
  334. (define-structure r6rs-lists r6rs-lists-interface
  335. (open scheme
  336. exceptions)
  337. (files list))
  338. (define-interface r6rs-hashtables-interface
  339. (export make-eq-hashtable
  340. make-eqv-hashtable
  341. make-hashtable
  342. hashtable?
  343. hashtable-size
  344. hashtable-ref
  345. hashtable-set!
  346. hashtable-delete!
  347. hashtable-contains?
  348. hashtable-update!
  349. hashtable-copy
  350. hashtable-clear!
  351. hashtable-keys
  352. hashtable-entries
  353. hashtable-equivalence-function
  354. hashtable-hash-function
  355. hashtable-mutable?
  356. equal-hash
  357. string-hash
  358. string-ci-hash
  359. symbol-hash))
  360. ; Utilities
  361. (define-interface r6rs-n-ary-comparisons-interface
  362. (export compare-n-ary define-n-ary-comparison))
  363. (define-structure r6rs-n-ary-comparisons r6rs-n-ary-comparisons-interface
  364. (open scheme
  365. r6rs-lists
  366. exceptions)
  367. (files n-ary-comparison))
  368. (define-interface r6rs-bitwise-interface
  369. (export bitwise-not
  370. bitwise-and
  371. bitwise-ior
  372. bitwise-xor
  373. bitwise-if
  374. bitwise-bit-count
  375. bitwise-length
  376. bitwise-first-bit-set
  377. bitwise-bit-set?
  378. bitwise-copy-bit
  379. bitwise-bit-field
  380. bitwise-copy-bit-field
  381. bitwise-arithmetic-shift
  382. bitwise-arithmetic-shift-left
  383. bitwise-arithmetic-shift-right
  384. bitwise-rotate-bit-field
  385. bitwise-reverse-bit-field))
  386. (define-structure r6rs-bitwise r6rs-bitwise-interface
  387. (open scheme
  388. bitwise
  389. exceptions)
  390. (files bitwise))