File: modcollapse.rkt

package info (click to toggle)
racket 7.9%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 178,684 kB
  • sloc: ansic: 282,112; lisp: 234,887; pascal: 70,954; sh: 27,112; asm: 16,268; makefile: 4,613; cpp: 2,715; ada: 1,681; javascript: 1,244; cs: 879; exp: 499; csh: 422; python: 274; xml: 106; perl: 104
file content (38 lines) | stat: -rw-r--r-- 1,388 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#lang racket/base

(require racket/contract/base
         "private/modcollapse-noctc.rkt")

(define simple-rel-to-module-path-v/c
  (and/c module-path?
         (or/c
          path?
          (cons/c 'lib any/c)
          (cons/c 'file any/c)
          (cons/c 'planet any/c)
          (cons/c 'quote any/c)
          (cons/c 'submod 
                  (cons/c (or/c 
                           path?
                           (cons/c 'lib any/c)
                           (cons/c 'file any/c)
                           (cons/c 'planet any/c)
                           (cons/c 'quote any/c))
                          (cons/c symbol? (listof symbol?)))))))

(define rel-to-module-path-v/c
  (or/c simple-rel-to-module-path-v/c 
        path?
        symbol? ;; why do we allow symbols (which are non-normalized) as a `relto' value?
        (-> simple-rel-to-module-path-v/c)))

(provide/contract
 [collapse-module-path (module-path?
                        rel-to-module-path-v/c
                        . -> . simple-rel-to-module-path-v/c)]
 [collapse-module-path-index (case->
                              (module-path-index?
                               . -> . (or/c #f module-path?))
                              ((or/c symbol? module-path-index?)
                               rel-to-module-path-v/c
                               . -> . simple-rel-to-module-path-v/c))])