module GraphRewriting.Layout.Coulomb where import Data.View import GraphRewriting.Graph.Types import GraphRewriting.Graph.Read import GraphRewriting.Layout.Position import GraphRewriting.Layout.Force coulombForce ∷ View Position n ⇒ Node -> WithGraph n Force coulombForce node = do n ← examineNode position node ns ← mapM (examineNode position) =<< readNodeList return $ fsum [repulsion n' n | n' ← ns]