Thanks.
To answer your first question, I (perhaps naively) assumed that the synaptic library used correct naming for its network prototypes [1].
My implementation contains a few modifications to the one defined as 'Architect.Hopfield' [2], which is why I decided to put it in a separate file. It also helps a visitor to know how the network is defined without needing to browse the source of the synaptic library.
[1]: https://github.com/cazala/synaptic/blob/master/README.md#hop...
[2]: https://github.com/cazala/synaptic/blob/master/src/architect...