任意の場所に要素( "$"、Undefined)が含まれている可能性のあるペアのリストを検索しようとしていました。その特別な要素の前にあるリストの部分だけを検索したかったので、次のようなものを試しました(すでに要素nとリストxsを引数として取ることが意図されています):
checkNotSameScope :: Env -> VarName -> Expr -> Expr
checkNotSameScope (xs:("$", Undefined):_) n e = if alreadyThere n xs then BoolLit False
else BoolLit True
しかし、それは機能しません。コンパイラは、(xs:..)が私のリストの前にあるSINGLE値のみを処理することを示しているようです。リストの最初のチャンクを示すために:を使用することはできません。単一の要素のみ。振り返ってみると、これは理にかなっています。そうでなければ、コンパイラはどうやって何をすべきかを知るのでしょうか?「x」のようなものに「s」を追加しても、魔法のように複数の要素が作成されることはありません。しかし、どうすればこれを回避できますか?