Hopを使うと、この作業を自動化できる。

(define-service (server-date)
    (current-date))
 
(<HTML>
 (<BUTTON>
  :onclick ~(with-hop ($server-date) (lambda (h) (alert h)))
  "Server time"))

と書いてやると、

  1. Hop はそれ自体がHTTPサーバ。
  2. define-service で、自動で CGI を設置してくれる。
  3. HTMLは、タグをS式で書ける。~(...) は特別扱いされ、Scheme2js で Javascriptコンパイルされる。alert は javascript の関数だ。lambda(h) は function (h) になる。
  4. with-hop は、new Ajax.Request ... のラッパーである。