anchor.diff:  (define (register-callback callback-name callback-function)
       (println {registering callback for } callback-name { : } (sym (term callback-function) (prefix callback-function)))
       (push (list callback-name (sym (term callback-function) (prefix callback-function))) Icallbacks)) 
  +
  +(define (deregister-callback callback-name)
  +    (println {deregistering callback for } callback-name)
  +    (setf (assoc "idle-event" Icallbacks) nil)
  +    (println {current callbacks: } Icallbacks)) 
   
   (define (do-callback callback-name data)
      (when (set 'func (lookup callback-name Icallbacks)) ; find first callback
  
positive.code: 
  ;; @module IRC
  ;; @description a basic irc library
  ;; @version early alpha! 0.1 2011-10-31 14:21:26
  ;; @author cormullion
  ;; Usage:
  ;; (IRC:init "newlithper") ; a username/nick (not that one obviously :-)
  
negative.code: 
  ; end of IRC code
  
  [text]
  
  simple bot code:
  (load (string (env {HOME}) {/projects/programming/newlisp-projects/irc.lsp}))
  (context 'BOT)
  (define bot-name "bot")
  (define (join-channel data)
  		(println {in BOT:join-channel with data: } data))
  (define (process-message data)
          ????)
  (IRC:register-callback "join-channel"    'join-channel) 
  (IRC:register-callback "channel-message" 'process-message)
  (IRC:register-callback "idle-event"      'do-idle-event)
  (IRC:register-callback "send-to-server"  'do-send-event)
  (IRC:init bot-name)
  (IRC:connect "irc.freenode.net" 6667)
  (IRC:join-channel {#newlisp})
  (IRC:read-irc-loop)
  [/text]