遅延評価されていることがわかります。アクセスなどを行う処理を引数にしてしまうとパフォーマンスに大きな影響を与えます。空の時のみ遅延評価されて呼び出されるので無駄なインスタンス生成やアクセスを防げます。使えばいいと思います。代替のインスタンスが存在しているときとかなら使っても良さそうです。ベルマン–フォード法を扱う問題ベルマン–フォード法ベルマン–フォード法は単一始点の最短経路問題を解くためのアルゴリズムです。計算量を考慮するとダイクストラ法で単一始点の最短経路問題を解く方が高速ですが、ベルマン–フォード法には負閉路の検出が可能で負のコスト辺にも対応可能であるというメリットがあります。負閉路検出の実装には注意が必要なポイントがあります。今回は負閉路検出に着目して実装します。負閉路検出の際は以下のどちらの負閉路を検出したいのか注意します。回目のループで更新かあるかどうかで判定することができます。とき始点から終点までの経路に負閉路が含まれる上記の内容を踏まえてベルマン–フォード法を実装します。区間を扱うのが得意なデータ構造です。