次のような Haskell コードを見つけました。
ps@(p:pt)
このコンテキストでは、シンボルは何を@
意味するのでしょうか? Google で情報を見つけることができないようです (残念ながら、Google でシンボルを検索するのは難しいです)。また、Prelude のドキュメントで関数を見つけることができないため、代わりに何らかの構文糖であるに違いないと思います。
ベストアンサー1
はい、それは単なる構文糖で、@
読み上げは「as」ですps@(p:pt)
。
- リスト:
ps
- リストの先頭:
p
- リストの最後:
pt
がなければ@
、(1) または (2) のどちらかを選択しなければなりません:(3)。
この構文は実際にはどのコンストラクタでも機能します。 がある場合data Tree a = Tree a [Tree a]
、t@(Tree _ kids)
ツリーとその子の両方にアクセスできます。