www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

test-graph-type.rkt (1163B)


      1 #lang typed/racket
      2 ;; 1.36s
      3 (require phc-adt)
      4 ;; 3.26s
      5 (require (lib "phc-graph/graph-type.hl.rkt"))
      6 ;; 3.46s
      7 (adt-init)
      8 ;; 3.36
      9 (define-graph-type g1
     10   [City [name : String]
     11         [streets : (Listof Street)]
     12         [citizens : (Listof Person)]]
     13   [Street [name : String]
     14           [houses : (Listof House)]]
     15   [House [owner : Person]]
     16   [Person [name : String]]
     17   #:invariant City.citizens._ ∈ City.streets._.houses._.owner
     18   #:invariant City.citizens._ ∋ City.streets._.houses._.owner)
     19 ;; 5.46
     20 (provide g1)
     21 ;; 5.51s
     22 (require (for-syntax racket/pretty
     23                      racket/base))
     24 (eval #'(begin
     25           (define-syntax (dbg _stx)
     26             (parameterize ([pretty-print-columns 188])
     27               (pretty-print (syntax-local-value #'g1)))
     28             #'(void))
     29           (dbg)))
     30 ;; 5.40
     31 
     32 (require (for-syntax syntax/parse
     33                      "../graph-info.hl.rkt"))
     34 
     35 (define-syntax dbg
     36   (syntax-parser
     37     [(_ t)
     38      #`(define-type t
     39          #,(node-info-promise-type
     40             (hash-ref (graph-info-nodes (syntax-local-value #'g1)) 'City)))]))
     41 (dbg t-city)
     42 ;(define-type expected (t-city Number String Symbol 'Database 'Index))
     43 ;; 6.76s