Haskell のリストに関する「@」記号は何を意味しますか? 質問する

Haskell のリストに関する「@」記号は何を意味しますか? 質問する

次のような Haskell コードを見つけました。

ps@(p:pt)

このコンテキストでは、シンボルは何を@意味するのでしょうか? Google で情報を見つけることができないようです (残念ながら、Google でシンボルを検索するのは難しいです)。また、Prelude のドキュメントで関数を見つけることができないため、代わりに何らかの構文糖であるに違いないと思います。

ベストアンサー1

はい、それは単なる構文糖で、@読み上げは「as」ですps@(p:pt)

  1. リスト:ps
  2. リストの先頭:p
  3. リストの最後:pt

がなければ@、(1) または (2) のどちらかを選択しなければなりません:(3)。

この構文は実際にはどのコンストラクタでも機能します。 がある場合data Tree a = Tree a [Tree a]t@(Tree _ kids)ツリーとその子の両方にアクセスできます。

おすすめ記事