Code: Select all
(define (@ tree)
  (cond
    ((null? tree) (throw-error "List expected in @get."))
    ((>= (length tree) 2)
      (if (> (length tree) 2)
          (@ (cons (context (tree 0) (name (tree 1))) (2 tree)))
          (context (tree 0) (name (tree 1)))))))
(context 'bar "test" "test value")
(context 'foo "child-hash" 'bar)
(println (@ '(foo child-hash test))) ; => test value