2016-05-31 13 views
3

私はLispを初めて使っていて、勉強しようとしています。特に、ZeroMQライブラリを使用して分散システムを作成しようとしています。 これは私の探索コードREPLでZeroMQの共通のlispバインディング

;;hwserver.lisp 
(defun main() 
    ;; prepare contexts 
    (zmq:with-context (context) 
    (zmq:with-socket (socket context zmq:rep) 
     (zmq:bind socket "tcp://*5555") 

     (loop 
    (let ((request (make-instance 'zmq:msg))) 

     ;; wait for next request from client 
     (zmq:recv socket request) 
     (print "received request: [~A]~%" 
      (zmq:msg-data-as-string request)) 

     ;;do some work 
     (sleep 1) 

     ;;send reply back to client 
     (let ((reply (make-instance 'zmq:msg :data "Hello World"))) 
     (zmq:send socket reply)))))) 
    (sb-ext:exit)) 

ですが、私は

(ql:quickload "zeromq") 
(load "hwserver.lisp") 

次のコマンドを実行します。そして、私は、次の警告が表示されます。

; 
; caught WARNING: 
; undefined variable: ZEROMQ:REP 
; 
; compilation unit finished 
; Undefined variable: 
;  ZEROMQ:REP 
; caught 1 WARNING condition 

もののzmq:担当者はzeromq packageからエクスポートされます。

そして、私は警告が(main)を実行しようと無視した場合、私は次のエラーに

The variable ZEROMQ:REP is unbound. 
    [Condition of type UNBOUND-VARIABLE] 

Restarts: 
0: [RETRY] Retry SLIME REPL evaluation request. 
1: [*ABORT] Return to SLIME's top level. 
2: [ABORT] abort thread (#<THREAD "repl-thread" RUNNING {10039B0003}>) 

Backtrace: 
    ;; backtrace omitted for being uninteresting here 

を得る私はここで間違って何をしているのですか?

答えて

3

このライン

(zmq:を有するソケット(ソケットコンテキストzmq:REP)

このエラー

を作成変数ZEROMQ:REPは非結合である

平均:それは価値がありません。シンボルがエクスポートされているかどうかは関係ありません。

私には、zmq:repではなく、ソケットタイプの記述子としてキーワードシンボル:repが必要です。

もう1つの悪いマクロが、予想されるタイプをチェックしていません。

+0

うん、それだった!本当にありがとう – saq7

関連する問題