[解決済み] Haskellのリストを参照する際の「@」記号の意味は?
2022-04-28 21:07:13
質問
次のようなHaskellのコードに出会いました。
ps@(p:pt)
は何を意味しているのでしょうか?
@
のシンボルは、この文脈ではどういう意味なのでしょうか?Googleでは情報が見つからないし(Googleで記号を検索するのは残念ながら難しい)、Preludeのドキュメントにもその関数が見つからないので、代わりにある種の構文的な砂糖であろうと想像しています。
どのように解決するのですか?
そうです、これは単なる構文上の糖分です。
@
を "as"と読み替えてください。
ps@(p:pt)
の名前を与えています。
-
リストを表示します。
ps
-
リストの先頭 :
p
-
リストの末尾
pt
がない場合は
@
の場合、(1)か(2):(3)のどちらかを選択しなければならない。
この構文は、実際にはどのようなコンストラクタにも当てはまります。
data Tree a = Tree a [Tree a]
であれば
t@(Tree _ kids)
を使うと、ツリーとその子供の両方にアクセスできるようになります。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] Pythonの "at"(@)マークは何をするものですか?
-
[解決済み] .の違いは何ですか?(ドット)と$(ドルマーク)の違いは何ですか?
-
[解決済み] 関数呼び出しにおけるstarとdoublestarの演算子の意味は?
-
[解決済み】Haskellの宣言におけるエクスクラメーションマークの意味とは?
-
[解決済み】PowerShellで"&&"や"-and "を動作させることはできますか?
-
[解決済み】「int main(){([](){})();}」はどのように有効なC++なのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エラー haskell: スコープ内にありません。どういう意味ですか?
-
[解決済み] 一般的に `{- |` で始まるHaskellのコメントは何を意味するのですか?
-
[解決済み] Haskell Preludeの'const'は何のためにあるのか?
-
[解決済み] IntとIntegerの違いは何ですか?
-
[解決済み] Haskellで副作用がモナドとしてモデル化されているのはなぜですか?
-
[解決済み] CabalとStackの違いは何ですか?
-
[解決済み] Haskellの "Just "構文とは?
-
[解決済み] レコードの単一フィールドを割り当て、残りのフィールドはコピーするための省略記法?
-
[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]
-
[解決済み] GHCでコンパイルした小さなHaskellプログラムを巨大なバイナリにする