Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。糖衣構文だと学びました。Trueですが厳密には1:[]はprefixになっていないと思えます。あれば確かにprefixと言えそうですがこれは[1:2:3]を解釈したものではないということをどう考えるべきですか?実装か関数の説明、のリストの糖衣構文のどれかが正確ではないと思うのですが。8:041:[]:2:3:[]は「文法的に誤り」ではないですよね。(IntとListを直接混ぜたリストは作れない)。ように問題なく評価できます。12:20ああ、言いたいことがわかりました>編集後の質問。(:)の見かけが左右対象なので混乱しているのかなと思いました。(:)の左右は対象ではありません。回答欄で説明しますね。2:10ああ、第三者の編集だったのですか。票2注意:元の質問が第三者により大幅に「編集」されており、この解答は現在の質問の答とは言い難くなっています。「リストがリストに含まれている」と解説している文章(出展不明)に対する疑問もっともな質問であり解答に値する質問だと思います。C言語のマクロのような式の文字列どおりの置換ではなく、式の構造を壊さないように適宜括弧を補って考える必要があります。展開するのは間違いです。(1:2:3:[])と等価です。第一引数のリスト要素を先頭から見ていって、第二引数のリストの先頭から同じ順に現れるかどうかを調べる関数です。第二引数のリスト構造内に「同じリストが含まれている」ことを調べるものではありません。「含まれている」がどのような意味を持つのか不明ですが、あまり正確ではない解説で誤解されるのもしようがないのではないかという気がします。(1:2:3:4:[])をご覧になると、第一引数のリスト構造が第二引数の構造内に含まれているのがわかります。|2(:)の見た目が左右対象で、しかも右結合前提で括弧が省略されるのでわからなくなったのかなと思いました。リストというのは、概念的にはこういうデータ構造です。xから作られるペアである、ということです。(終わりがある場合は)最後が必ずNilになります。Nilとだけあれば空のリスト。Nilなら「1」をひとつの要素として持つ長さ1のリスト。3からなるリストならこうなります。Nil))最後のNilはリストの要素ではなく、リストの終端を表しているだけです。これを普通のリスト表記で書くと[1,2,3]ということになり、Nilはどこにも出てきません。3からなる長さ3のリスト。1:2:3:[]となります。[1]、要素1,2,3からなる長さ3のリストを[1,2,3]と書けると便利です。1:2:3:[]という対応があることがわかると思います。最後に[]が「付け加わった」のではないことに注意。次のとおり定義できます。dつまり、第一引数が先にNilになったら真。第二引数の方が先に尽きちゃったら偽。両方ともペアの場合、現在の要素を比べて、それが等しければ「残りの要素同士」を比べる。Nil)))動作を追ってみてください。ここからは余談ですが、Nilを要素に含むリストというのももちろん考えることができます。整数とリストは混ぜられないので、「リストのリスト」を考えます。Nil))といった具合にリストを作れます。Nil))(:)と[]に置き換えれば:(1:[]):[]:(2:[]):[]内側のリストだけ糖衣構文にすれば:[1]:[]:[2]:[]全てを糖衣構文にすれば:[[1],[],[2]]となるわけです。ありがとうございます。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。