Haskell で書いたプログラムに基づいて、いくつかの表示セマンティクスを Agda にエンコードしようとしています。
data Value = FunVal (Value -> Value)
| PriVal Int
| ConVal Id [Value]
| Error String
Agda では、直訳すると次のようになります。
data Value : Set where
FunVal : (Value -> Value) -> Value
PriVal : ℕ -> Value
ConVal : String -> List Value -> Value
Error : String -> Value
しかし、FunVal に関連するエラーが発生します。
Value は、Value の定義のコンストラクター FunVal の型の矢印の左側にあるため、厳密には正ではありません。
これは何を意味するのでしょうか?これを Agda でエンコードできますか? 私はそれについて間違った方法で進んでいますか?
ありがとう。