Paul Graham씨가 작성한 SymbolicWeb은 Lisp을 이용한 웹 프로그램을 제작할 수 있는 새로운 형태의 프레임웍입니다.
SymbolicWeb은 Common Lisp을 위한 GTK+, QT와 유사한 GUI 프레임웍 작성을 목적으로 합니다. UI 엘리먼트를 브라우저세어 렌더링한다는 점이 차이점입니다.
echo chat 프로그램과 같은 몇 가지 예제가 있습니다:
LISP:

      ;;;; http://nostdal.org/ ;;;;

      (in-package #:sw)

      (defparameter *max-chat-pane-size* 100)

      (defapp chat-app (empty-page-app)
        ((input (mk-text-input))
         (chat-pane :allocation :class (mk-container nil))))

      (defuri chat-app "chat")

      (defmethod main ((chat-app chat-app))
        (with-slots (input chat-pane) chat-app
          (setf (on-enterpress-of input
                                :callback-data `((:input-value . ,(js-code-of (value-of input)))) ;; Include some data when the event fires.
                                :js-after (js-code-of (setf (value-of input) "")))                ;; Clear the input field after the event has been fired and sent.
                (lambda (&key input-value)
                  (prepend (mk-span (escape-for-html input-value) :display "block")
                           chat-pane)
                  ;; Don't let it grow too big; delete some chat history.
                  (when (> (length (children-of chat-pane)) *max-chat-pane-size*)
                    (dolist (span (subseq (children-of chat-pane) *max-chat-pane-size*))
                      (remove span)))))
          (add-to *root*
                  (mk-span (who (:p "Type something in and press enter. New content is added at the top.")))
                  input
                  chat-pane)))


from SymbolicWeb: Ajax and Comet with Lisp
Posted by 행복한고니 트랙백 0 : 댓글 0

댓글을 달아 주세요