Haskell 関数を次のように記述しました。
shift :: Subst a -> Subst a
shift (S s) = [(x, (subst s' d)) | (x,d) <- s] where
s' = [(x,d) | (x,d) <- s, null (vars d)]
そのようなデータ型でdata Subst a = S [(String,a)]
subst
assubst :: Subst a -> a -> a
とvars
asを宣言しましたvars :: a -> [String]
。これを実行すると、型エラーが発生します。理由はありますか?