我正在尝试实现一个神经网络,每个神经元都需要对其他神经元的引用。我一直在尝试通过原子来实现这个引用。
考虑代码
(def neuron1 {:connections [(atom 0)])
(def neuron2 {:connections [(atom neuron1)]})
(update-in neuron1 [:connections 0] #(reset! % neuron2))
最后一个会炸毁堆栈。
因此,原子似乎包含其内容,而不仅仅是引用它们。
如果我想传递一个指针的等价物,我该怎么办?我是否必须使用函数,如
(def neuron1 {:connections [(fn [] neuron2)]})
并调用它,而不是使用原子并取消引用它?