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 でエンコードできますか? 私はそれについて間違った方法で進んでいますか?
ありがとう。