fregel-1.2.0: sample-programs/sssp2.fgl
data SSSP = SSSP { dist :: Int, modified :: Bool} deriving (Eq, Show)
sssp2 g =
let step v prev curr = let d = prev v .^ dist `min` minimum [ prev u .^ dist + e | (e, u) <- is v, prev u .^ modified] ;
m = prev v .^ dist != d
in SSSP d m ;
init v = SSSP (if vid v == 1 then 0 else 1000000) (vid v == 1)
in fregel init step Fix g