anchor.diff:      swap cr ." | got " . cr ." | expected " . cr
     endif ;
   
  -\ === classic lisp list === /
  -: cons { addr val -- new-list-address }
  -  2 cells allocate throw
  -  dup addr val rot 2! ;
  -
  -: cdr ( addr -- next-addr )
  -  cell+ @ ;
  -
  -: int-pr ( num -- )
  -  s>d <# #s #> type ;
  -
  -: prn ( list-address -- )
  -  ." (" 2@ int-pr
  -  begin
  -    space 2@ int-pr
  -    dup 0=
  -  until
  -  .\" )\n" ;
  -
  -0 1 cons 2 cons 3 cons 4 cons
  -prn
  -
  -
  -\ === mutable vector === /
  -\ Singly-linked list, with an "object" pair that points to both ends.
  -\ This allows fast append and fast iteration from beginning to end,
  -\ like a vector.  ...but buys simplicity with mutability
  -: new-mutvec ( -- mutvec-addr )
  -  2 cells allocate throw
  -  dup 0 0 rot 2! ;
  -
  -: mutvec-append { mutvec-addr value -- }
  -  2 cells allocate throw    \ new pair
  -  dup nil value rot 2!      \ put value in new pair
  -  dup mutvec-addr @
  -    ?dup 0= if mutvec-addr endif
  -    cell+ !                 \ update old tail
  -  mutvec-addr !             \ update object
  -  ;
  -
  -new-mutvec
  -dup 5 mutvec-append
  -dup 4 mutvec-append
  -dup 3 mutvec-append
  -dup 2 mutvec-append
  -cdr prn
  +: safe-type ( str-addr str-len -- )
  +    dup 256 > if
  +        drop 256 type ." ...<lots more>" type
  +    else
  +        type
  +    endif ;
   
   
   \ === mutable string buffer === /
  
positive.code: 
  MalType% deftype* constant MalDefault
  
  \ Example and tests
  
  MalType%
    cell% field obj-list/car
    cell% field obj-list/cdr
  deftype* constant ObjList
  
  ObjList new
  ObjList new
  = 0 test=
  
  ObjList new dup obj-list/car 5 swap ! obj-list/car @   5 test=
  
  \ === sorted-array === /
  \ Here are a few utility functions useful for creating and maintaining
  
negative.code: 
    pxt array-find ( type idx found? )
    dup 0= if \ No implementation found for this method; check for a default
      2drop drop MalDefault dup MalTypeType-methods 2@ swap
      dup 0= if ." No implementation found for this method, and no protocols extended to MalDefault" 1 throw endif
      pxt array-find ( type idx found? )
    endif
  