packages feed

egison-3.7.0: sample/bellman-ford.egi

; initiate a distance graph
(define $A
  [|[| 0 19 36 66 99 65 |]
    [| 19 0 25 59 64 31 |]
    [| 36 25 0 84 48 28 |]
    [| 66 59 84 0 59 29 |]
    [| 99 64 48 59 0 9 |]
    [| 65 31 28 29 9 0 |]|])

(define $G.* (lambda [%t1 %t2] (with-symbols {i} (contract min (+ t1~#_i t2~i_#)))))

(match (iterate (lambda [%P] (G.* P A)) A) (list something)
  {[<join _ <cons $P <cons ,P _>>> P]})
;[|[| 0 19 36 66 59 50 |]
;  [| 19 0 25 59 40 31 |]
;  [| 36 25 0 57 37 28 |]
;  [| 66 59 57 0 38 29 |]
;  [| 59 40 37 38 0 9 |]
;  [| 50 31 28 29 9 0 |]|]