我是宏的新手,并且在JSON-RPC宏中苦苦挣扎。
要求提供类型,我不知道如何正确输入。
(defmacro defun-json-rpc (name type lambda-list &body body)
"Defines a function and registers it as a json-rpc target."
(unless (json-rpc-encoding-p type)
(error "New version of defun-json-rpc requires a TYPE argument"))
`(progn
(defun ,name ,lambda-list ,@body)
(export-as-json-rpc ',name (lisp-to-camel-case (symbol-name ',name)) ,type)))
我发现的一段示例代码如下,但它不包含类型参数:
(json-rpc:defun-json-rpc add (x y)
(+ x y))
我如何输入类型?
答案 0 :(得分:0)
找到它。它是一个特定于JSON-RPC的关键字,而不是一个lisp类型。我只需要查看json-rpc-encoding-p,看看只有3个关键字是有效的。
(defgeneric json-rpc-encoding-p (keyword)
(:documentation "Is KEYWORD a valid JSON-RPC value encoding?")
(:method (keyword)
"Default is no."
(declare (ignore keyword))
nil)
;;; built-in methods
(:method ((keyword (eql :guessing)))
t)
(:method ((keyword (eql :streaming)))
t)
(:method ((keyword (eql :explicit)))
t))