no title pasted by sz0ka on Wed Feb 27 12:51:40 2013

(use medea)
(define keylist '(name foo))
 
 (define (get-value key)
   (printf "~A: " key)
   (read-line))
 
 (define (ask)
   (with-output-to-string
     (write-json
         (map cons keylist
             (map get-value keylist))))
     )

Maybe this? (untested) pasted by mario-goulart on Wed Feb 27 13:14:24 2013

(use medea)

(define keylist '(name foo))
 
(define (build-alist-from-user-input key)
   (printf "~A: " key)
   (cons key (read-line)))
 
 (define (ask)
   (with-output-to-string
     (lambda ()
       (write-json
         (map get-value keylist)))))

build alist, then write json pasted by mario-goulart on Wed Feb 27 13:31:41 2013

(use medea)

(define keylist '(name foo))

(define (build-alist-from-user-input key)
   (printf "~A: " key)
   (cons key (read-line)))

(define (ask)
  (let ((alist (map build-alist-from-user-input keylist)))
    (with-output-to-string
      (lambda ()
	(write-json alist)))))

Or alternatively using call-with-output-string added by DerGuteMoritz on Wed Feb 27 14:10:04 2013

(use medea)

(define keylist '(name foo))
 
(define (get-value key)
  (printf "~A: " key)
  (cons key (read-line)))

(define (ask)
  (call-with-output-string
      (lambda (out) 
        (write-json (map get-value keylist) out))))