ジェネリックHaskellとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > ジェネリックHaskellの意味・解説 

ジェネリックHaskell

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/02 08:30 UTC 版)

ジェネリックプログラミング」の記事における「ジェネリックHaskell」の解説

ジェネリックHaskellはユトレヒト大学開発されHaskellのもう1つ拡張だ。この拡張下記特徴がある。 Type-indexed values様々なHaskell型のコンストラクタユニット基本型合計、積、ユーザー定義型のコンストラクタ)に渡ってインデックス付けられた値として定義される。さらにコンストラクタケースを使って特定のコンストラクタに対してtype-indexed values動作指定することもでき、デフォルトケースを使ったもう一つの中で1つジェネリック定義を再利用することもできる。 type-indexed value結果任意の型に特殊化され得る。 Kind-indexed typesは*とk → kの両方ケース与えることで定義され種別に対してインデックス付けられた型である。インスタンス種別にkind-indexed type適用することで得られるジェネリック定義は型もしくは種別にそれらを適用することで利用できる。これはジェネリックアプリケーションと呼ばれる。どの種類ジェネリック定義が適用されたかに依存して結果は型か値になる。 Generic abstractionジェネリック定義が(与えられ種別の)型パラメーター抽象化定義されることを可能にする。 Type-indexed typesは型コンストラクタに対してインデックス付けられた型である。これらは型がもっとジェネリック値に取り入るために利用できる。type-indexed types結果任意の型に特殊化され得る。 ジェネリックHaskellの比較関数一例として。 type Eq {[ * ]} t1 t2 = t1 -> t2 -> Bool type Eq {[ k -> l ]} t1 t2 = forall u1 u2. Eq {[ k ]} u1 u2 -> Eq {[ l ]} (t1 u1) (t2 u2) eq {| t :: k |} :: Eq {[ k ]} t t eq {| Unit |} _ _ = True eq {| :+: |} eqA eqB (Inl a1) (Inl a2) = eqA a1 a2 eq {| :+: |} eqA eqB (Inr b1) (Inr b2) = eqB b1 b2 eq {| :+: |} eqA eqB _ _ = False eq {| :*: |} eqA eqB (a1 :*: b1) (a2 :*: b2) = eqA a1 a2 && eqB b1 b2 eq {| Int |} = (==) eq {| Char |} = (==) eq {| Bool |} = (==)

※この「ジェネリックHaskell」の解説は、「ジェネリックプログラミング」の解説の一部です。
「ジェネリックHaskell」を含む「ジェネリックプログラミング」の記事については、「ジェネリックプログラミング」の概要を参照ください。

ウィキペディア小見出し辞書の「ジェネリックHaskell」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ジェネリックHaskell」の関連用語

ジェネリックHaskellのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ジェネリックHaskellのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのジェネリックプログラミング (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS