有効なグラフのタイプをDhallでエンコードできますか?
Dhallでwiki(有向グラフを構成する一連のドキュメント)を表現したいと思います。これらのドキュメントはHTMLにレンダリングされますが、リンク切れが発生しないようにしたいと思います。私が見ると、これは無効なグラフ(存在しないノードへのリンクを持つグラフ)を型システムで表現できなくするか、または可能性のあるグラフ(たとえばX、ノードAには、存在しないノードBへのリンクが含まれます。 単純な隣接リストの表現は次のようになります。 let Node : Type = { id: Text, neighbors: List Text } let Graph : Type = List Node let example : Graph = [ { id = "a", neighbors = ["b"] } ] in example この例からわかるように、このタイプは有効なグラフに対応しない値を許可します(IDが「b」のノードはありませんが、IDが「a」のノードはIDが「b」のネイバーを規定しています)。さらに、Dhallは設計による文字列比較をサポートしていないため、各ノードの隣接ノードを折りたたんでこれらの問題のリストを生成することはできません。 壊れたリンクのリストの計算または型システムによる壊れたリンクの除外を可能にする表現はありますか? 更新:NaturalsがDhallで同等であることを発見しました。したがって、識別子がNaturalsである場合、無効なエッジ(「リンク切れ」)を識別し、識別子の使用を複製する関数を作成できると思います。 ただし、グラフタイプを定義できるかどうかという元の質問は残っています。