Differences From
Artifact [a8f59872e4]:
31 31 ; the name bindings are ephemeral; they do not survive the immediate
32 32 ; context of the constructor.
33 33
34 34 (define-macro (interlace . body)
35 35 ; given a list with both named and nameless members, identify
36 36 ; which is which and instate the vector.
37 37 (define (name? term)
38 + ; given a symbol, determine wheter it is a name, and if so return
39 + ; that name as a string and without the name-marking suffix ‹.›
40 + ; otherwise, return #f
38 41 (define (coda str) (substring str
39 42 (- (string-length str) 1)
40 43 (string-length str)))
41 44 (if (not (symbol? term)) #f
42 45 (let* ([term-string (symbol->string term)]
43 46 [final-char (coda term-string)])
44 - (print "TERMSTRING:" term-string)
45 - (print "CHAR:" final-char)
46 47 (if (not (equal? final-char ".")) #f
47 - (substring term-string 0 (- (string-length term-string) 1))))))
48 + (string->symbol(substring term-string 0 (- (string-length term-string) 1)))))))
48 49
49 50 (define (divide-entries lst @named @nameless)
50 51 ; given a list, return a pair [ x . y ] such that x is a list
51 52 ; of named terms ( name . term ) and y is a list of nameless
52 53 ; terms.
53 54 (if (eq? lst '()) (cons @named @nameless)
54 55 (let* ([head (car lst)]