1. ホーム
  2. haskell

[解決済み] Haskellのリストを参照する際の「@」記号の意味は?

2022-04-28 21:07:13

質問

次のようなHaskellのコードに出会いました。

ps@(p:pt)

は何を意味しているのでしょうか? @ のシンボルは、この文脈ではどういう意味なのでしょうか?Googleでは情報が見つからないし(Googleで記号を検索するのは残念ながら難しい)、Preludeのドキュメントにもその関数が見つからないので、代わりにある種の構文的な砂糖であろうと想像しています。

どのように解決するのですか?

そうです、これは単なる構文上の糖分です。 @ を "as"と読み替えてください。 ps@(p:pt) の名前を与えています。

  1. リストを表示します。 ps
  2. リストの先頭 : p
  3. リストの末尾 pt

がない場合は @ の場合、(1)か(2):(3)のどちらかを選択しなければならない。

この構文は、実際にはどのようなコンストラクタにも当てはまります。 data Tree a = Tree a [Tree a] であれば t@(Tree _ kids) を使うと、ツリーとその子供の両方にアクセスできるようになります。