В ракете есть гуй: http://docs.racket-lang.org/gui/ Но только он какой-то странный. Копировать из messagebox-ов нельзя. ctrl-c ctrl-v в текстовых полях не работает, хз вообще что делать. Вообще ракет странный и такое впечатление, будто какой-то недоделанный. Или просто логика тех, кто его делал, какая-то своя, необычная, никакувсех. Например, я так и не нашёл команду, которая бы возвращала булево значение присутствует ли данный элемент в данном списке или нет. Зато есть команда (member e lst), которая возвращает кусок списка lst начиная с элемента e, а если такого элемента там нет, то возвращает #f. Я написал вот такой костыль:
(define (member? el lst)
(not (equal? (member el lst) #f)))
Это не сложно, но как-то странно, что в языке, который построен на операциях со списками чуть менее чем полностью, такой банальной хуйни нет по умолчанию.