リストのconsの型をA -> list A -> list AではなくA -> list (list A) -> list Aにした型をHaskellとCoq/SSReflectで定義したいHaskellCoqssreflectリスト形式検証 はじめに 本記事はTPP2024で発表した内容になります。 リストlistの型は通常nilとconsの2つのコンストラクタから定義されますが、 型変数Aに対し、cons A型をA -> list A -> list AではなくA -> list (list A) -> list Aに変更した型をHaskellやCoq/SSreflectで定義する方法について記述します。 ソースはこちら Haskellで定義する まず、この型の名前をSSeqとしてHaskellで実装したものは以下のようになります。
