型シグネチャ宣言の文脈指定の部分にクエスチョンマーク ? があるのは、
どういった意味なのでしょうか。

具体的には、encoding-0.6.2 というパッケージの中に
次ようなのシグネチャの関数がありました。

System.IO.Encoding.print :: (Data.Encoding.Base.Encoding e, Show a, ?enc::e) => a IO

=> 以降に型変数 e が現れていないのも不思議です。
併せて教えていただけないでしょうか。