(import (rnrs) (rnrs io ports) (ypsilon socket)) (define group-letter "G") (define (connection-handler socket text) (let* ((binary-port (socket-port socket)) (port (transcoded-port binary-port (make-transcoder (utf-8-codec) 'crlf))) (hear (lambda () (hear port))) (say (lambda (what) (say port what)))) (hear) (say "HELLO") (hear) (hear) (let* ((numbers (map (lambda (dummy) (string->number (hear))) '(1 2 3))) (sum (fold-left + 0 numbers)) (string-sum (number->string sum))) (say string-sum) (hear) (say group-letter) (hear) (say text) (hear) (hear) (hear) (hear) (hear)))) (define (hear port) (let ((read (get-line port))) (print read) read)) (define (say port string) (print (string-append "--> " string)) (put-string port (string-append string "\n"))) (define (print msg) (display (string-append msg "\n"))) (define (make-connection-handler text) (lambda (socket) (connection-handler socket text))) (define (send-payload payload) (call-with-socket (make-client-socket "ilab.net.in.tum.de" "2342") (make-connection-handler payload))) (define submittables (cdr (command-line))) (if (null? submittables) (print "Need to specify at least one string")) (map send-payload submittables)