次のようなHaskellコードを見つけました。
ps@(p:pt)
何をしない@
シンボルは、この文脈で意味ですか?Googleで情報を見つけることができないようです(残念ながらGoogleでシンボルを検索するのは難しいです)。また、Preludeのドキュメントで関数を見つけることができないので、代わりに何らかの構文上の砂糖である必要があると思います。
次のようなHaskellコードを見つけました。
ps@(p:pt)
何をしない@
シンボルは、この文脈で意味ですか?Googleで情報を見つけることができないようです(残念ながらGoogleでシンボルを検索するのは難しいです)。また、Preludeのドキュメントで関数を見つけることができないので、代わりに何らかの構文上の砂糖である必要があると思います。
回答:
@
すべてのレベルで機能することを追加したいと思います。つまり、これを行うことができます。
let a @ (b @ (Just c), Just d) = (Just 1, Just 2) in (a, b, c, d)
これはこれを生成します: ((Just 1, Just 2), Just 1, 1, 2)
つまり、基本的にはパターンを値にバインドする方法です。これは、上で示したように、リストだけでなく、あらゆる種類のパターンで機能することも意味します。これは、より多くのケースで使用できることを意味するため、知っておくと非常に便利です。
この場合、a
全体でMaybe Tuple
、b
ちょうど最初にJust
タプルであり、c
そしてd
値が第一及び第二の中に含まれているJust
それぞれのタプルに
@
そのページのの2番目の出現がそれを説明しています。