PasteRack.org
Paste # 88591
2019-07-17 11:25:05

Fork as a new paste.

Paste viewed 472 times.


Embed:

#lang scribble/manual

@(require pict ppict/2)

@(define (textit str)
   (text str '(italic) 12))

@(define (node sym)
   (define p (textit (symbol->string sym)))
   (define p+ (cc-superimpose (blank (+ 10 (pict-width p)) (+ 4 (pict-height p))) p))
   (tag-pict p+ sym))

@(struct arrow [src find-src tgt find-tgt label label-x label-y] #:transparent)

@(define (make-arrow src find-src tgt find-tgt label [label-x 0] [label-y 0])
   (arrow src find-src tgt find-tgt label label-x label-y))

@(cc-superimpose
   (rectangle 300 150)
   (ppict-do
     (blank 280 110)
     #:go (coord 0 0)
     (node 'A)
     #:go (coord 1/2 0)
     (node 'B)
     #:go (coord 1/2 1)
     (node 'C)
     #:go (coord 1 1)
     (node 'D)
     #:set (let ([pp ppict-do-state])
             (for/fold ([pp pp])
                       ([a (list (make-arrow 'A rc-find 'B lc-find @textit{f})
                                 (make-arrow 'A rb-find 'C lt-find @textit{g ∘ f} -45 -2)
                                 (make-arrow 'B cb-find 'C ct-find @textit{g} 8 -7)
                                 (make-arrow 'B rb-find 'D lt-find @textit{h ∘ g} 15 2)
                                 (make-arrow 'C rc-find 'D lc-find @textit{h}))])
               (pin-arrow-line
                 7 pp
                 (find-tag pp (arrow-src a)) (arrow-find-src a)
                 (find-tag pp (arrow-tgt a)) (arrow-find-tgt a)
                 #:label (arrow-label a)
                 #:x-adjust-label (arrow-label-x a)
                 #:y-adjust-label (arrow-label-y a))))))

=>

standard-module-name-resolver: collection not found
  for module path: ppict/2
  collection: "ppict"
  in collection directories:
   /home/pasterack/.racket/7.3/collects
   /home/pasterack/racket73/collects
   ... [166 additional linked and package directories]
  context...:
   show-collection-err
   standard-module-name-resolver
   syntax-local-module-exports
   /home/pasterack/racket73/collects/racket/require-transform.rkt:266:2: expand-import
   /home/pasterack/racket73/collects/racket/private/reqprov.rkt:571:24
   /home/pasterack/racket73/collects/racket/private/reqprov.rkt:559:5
   /home/pasterack/racket73/collects/racket/require-transform.rkt:266:2: expand-import
   /home/pasterack/racket73/collects/racket/private/reqprov.rkt:266:21: try-next
   /home/pasterack/racket73/collects/racket/private/reqprov.rkt:348:21: try-next
   /home/pasterack/racket73/collects/racket/private/reqprov.rkt:243:2: require
   apply-transformer-in-context
   apply-transformer52
   dispatch-transformer41
   do-local-expand50
   /home/pasterack/racket73/collects/syntax/wrap-modbeg.rkt:46:4: do-wrapping-module-begin
   apply-transformer-in-context
   ...