我正在尝试创建一个可以递归操作的宏。它需要在一个(->
)或两个(<->
)方向的两个节点之间创建链接。我认为这是...
的一个问题,似乎无法让它发挥作用。
创建结构
(define-struct node (name edges) #:transparent)
所需的输入和输出示例
> (edges node1 <-> node2 -> node3)
> node1
> (node 'node1 '(node2))
> node2
> (node 'node2 '(node1 node3))
> node3
> (node 'node3 '())
当前输入和输出
> (edges node1 -> node2 node3)
> node1
> (node 'node1 '(node2 node3))
代码
(define-syntax edge
(syntax-rules ()
[(edge node-name1 node-name2)
(begin (set! node-name1 (make-node (quote node-name1) (add-unique (node-name node-name2) (node-edges node-name1)))))]))
(define-syntax edges
(syntax-rules (-> <->)
[(edges node-name1 -> node-name2 ...)
(begin (edge node-name1 node-name2 ...))]
[(edges node-name1 <-> node-name2 ...)
(begin (edge node-name1 node-name2) ...
(edge node-name2 node-name1)
...)]))
先前已定义节点。
答案 0 :(得分:0)
这有帮助吗?
public void release()