[Haskell-beginners] Implementing a Local Propagation Network
Patrick LeBoutillier
patrick.leboutillier at gmail.com
Mon May 17 20:59:11 EDT 2010
Hi all,
After learning some Haskell recently, I decided to revisit a book
about functional programming techniques for Perl: Higher Order Perl. I
didn't fully understand the book at the time but now my Haskell
experience has proved to be very insightful.
Towards the end of the book the author implements a local propagation network.
Here is the Perl source code:
http://hop.perl.plover.com/Examples/Chap9/Local-Propagation/
The PDF of the specific chapter is here:
http://hop.perl.plover.com/book/pdf/09DeclarativeProgramming.pdf
I would like to experiment with something similar in Haskell, but the
way this network is designed is all about state and references:
- Wires have a values that can change over time;
- Wires have references to nodes;
- Nodes have references to wires;
I'm a bit stuck as to how to approach the "object has a list
references to other objects" situation from Haskell. I tried this:
type Name = String
data Node = Node Name [Wire]
data Wire = Wire Name Node Double [Node]
But that doesn't seem like it would work since when I change a Wire I
must find all "copies" of it (in the Node objects) and update them
also. Perhaps I should just refer to Wires/Nodes by name and use an
association list to lookup them up, but that seems cumbersome.
Anybody have any suggestions?
Thanks a lot,
Patrick
--
=====================
Patrick LeBoutillier
Rosemère, Québec, Canada
More information about the Beginners
mailing list