型推論とは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 人文 > 論理 > 推論 > 型推論の意味・解説 

型推論

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

Rust (プログラミング言語)」の記事における「型推論」の解説

Rustコンパイラ変数への代入時(variable = value)、変数の型を値の型に基づき型推論する。変数の宣言には必ずしも型を決定するための初期値を必要としない変数の宣言時に初期値与えられ場合は「変数の型」は「初期値の型」であると型推論がなされるが、初期値与えられなかった場合以降ブロックコード中のその変数へ値が初め代入され時に左辺変数の型」は「右辺代入する値の型」であると型推論がなされる変数への代入が型不一致により失敗した場合にはコンパイル時にエラー検出する

※この「型推論」の解説は、「Rust (プログラミング言語)」の解説の一部です。
「型推論」を含む「Rust (プログラミング言語)」の記事については、「Rust (プログラミング言語)」の概要を参照ください。


型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/17 21:54 UTC 版)

C SharpとJavaの比較」の記事における「型推論」の解説

C# 3.0コンテキストキーワードvarによる限定された型推論が導入された。ローカル変数宣言時に、型を右辺から推論できるメソッド引数フィールドには使えないまた、ラムダ式戻り値および仮引数は型推論により決定されるラムダ式仮引数は型を省略することで型推論されるが、型推論が困難な場合には明示的に型を指定するJava 7で導入されダイヤモンド演算子<>は宣言文右辺ジェネリクスの型を省略できる程度のものでしかなかったが、Java 10ではC#同様に予約型名varによるローカル変数の型推論が導入された。Java 8で導入されラムダ式では、仮引数の型を省略することで型推論されるが、さらにJava 11ではラムダ式仮引数の型にvar使用して型推論できるようになった

※この「型推論」の解説は、「C SharpとJavaの比較」の解説の一部です。
「型推論」を含む「C SharpとJavaの比較」の記事については、「C SharpとJavaの比較」の概要を参照ください。


型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/20 02:06 UTC 版)

Haskell」の記事における「型推論」の解説

Haskell では関数データ型明示しなくても処理系自動的に型を推論する。以下は型の宣言省略し本体のみを宣言した引数平方返す関数 square である。 square x = x * x この場合 square の型は型推論され、次のように明示的に型を宣言したのと同じになるsquare :: (Num a) => a -> asquare x = x * x この宣言は、「Numのインスタンスである a の型の値を引数にとり、a の型の値を返す」と読める。ここでは「*」演算子適用可能な最も広い型である Num a選択されており、整数浮動小数点数有理数のような Num のインスタンスであるあらゆる型の値を渡すことができる。外部公開するような関数定義するときは、型推論によって自動的に選択される最も広い型では適用可能な範囲が広すぎる場合もある。Integer のみを渡せるように制限する場合は、次のように明示的に型を宣言すればよい。 square :: Integer -> Integersquare x = x * x 型推論のため、Haskell は型安全でありながらほとんどの部分で型宣言省略できる。なお、次のコードは型宣言必要な例である。read は文字列をその文字列があらわすデータ型変換する抽象化された関数である。 main = print (read "42") -- コンパイルエラー! このコードコンパイルエラーになる。read複数インスタンス実装されており、数値なら数値型変換する readリストならリスト変換する read というように型ごとに実装存在するHaskell の型は総て静的決定されなければならない。このコード場合プログラマread :: String -> Int という型をもつ実装read選択される期待しているであろうが、これはコンパイラによる静的型検査では決定できない。つまり、Haskell コンパイラread返り値受け取っている関数 print の型を検査し多数実装の中から適切な read選択しようとするが、printShowインスタンス存在するあらゆる型を引数にとるため、型推論によっても read の型を一意決定できない。これを解消するひとつの方法は、:: によって型を明示することである。 main = print ((read "42") :: Int) -- コンパイル成功read返り値Int明示している また、そもそも read返り値整数型しか取らない関数与えていればあいまいさ生じず、型推論は成功する。 printIntOnly :: Int -> IO ()printIntOnly x = print xmain = printIntOnly (read "42") -- コンパイル成功他の言語、たとえば Javaこのような抽象的な関数書こうとしても、Java では返り値の値の型によって関数選択するようなことはできない引数の型によって選択するメソッドオーバーロード存在する)。そのため、関数実装ごとに別の名前をつけてプログラマ明示的に選択させて解決させることになる。この方法は簡潔わかりやすいが、抽象性の高さに基づく再利用性という点では Haskell のような多相には劣ってしまう。

※この「型推論」の解説は、「Haskell」の解説の一部です。
「型推論」を含む「Haskell」の記事については、「Haskell」の概要を参照ください。


型推論

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

ユニフィケーション」の記事における「型推論」の解説

ユニフィケーションは型推論でも使われており、例え関数型言語 Haskell使われている。型推論を行う言語では型に関する情報をいちいち記述する必要がなく、ユニフィケーションデータ型誤り検出使われるHaskellの式 1:['a','b','c'] は型付け正しくない。なぜならリスト構築関数 : の型は a->[a]->[a] だが、第一引数 1 からポリモルフィックな型変数 a はInt型となるのに対して、['a','b','c'] の型は[Char]であり、a は同時に CharInt になることはできないからである。 型推論のアルゴリズム次のうになる: 任意の変数任意の表現単一化し、その表現インスタンス化する。理論によっては出現検査でこの規則制約課すこともある。 2つの型定数両者が同じ型のときのみ単一化される。 2つの型構築は、両者使用する型構築子が同じで、それらのコンポーネント型が再帰的単一化されるときのみ単一化される。 宣言的特徴から、ユニフィケーションが行われる順序通常重要ではない。

※この「型推論」の解説は、「ユニフィケーション」の解説の一部です。
「型推論」を含む「ユニフィケーション」の記事については、「ユニフィケーション」の概要を参照ください。


型推論

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

型システム」の記事における「型推論」の解説

詳細は「型推論」を参照 静的型システム言語では型宣言を必要とし、基本的にプログラマすべての変数特定の型を明示的に関連付けなければならない。しかし、変数初期化時の右辺値や変数使われ方など、プログラマが型を明示せずともコード文脈から型を自動的に決定する型推論(type inference)の機能を持つ言語もある。例として、Haskellにおいて変数 x と y を加算する関数 f を定義してみる。 f x y = x + y ここで、x と y の型を特に明示していないが、+による加算数値のみに定義されているので、コンパイラは x と y は共に数値型であると推論できる。ゆえにプログラム中で f の引数として数値でない型(文字列リストなど)の値を渡して呼び出すとエラー報告するmain = do print (f 1 2) -- 3 print (f 1.0 2.0) -- 3.0 --print (f "hoge" "fuga") -- コンパイルエラー。 型推論の目的は、単にコード記述効率向上したり、型のミスマッチ起因するエラー軽減したりすることだけではない。ラムダ式匿名型など、コンパイラ内部で型を自動生成し、プログラマ具体的な型の名前をコード上で書き下すことができない場合もあり、そういった機能対応しなければならないという目的もあって型推論を導入した言語もある(C++C#など)。

※この「型推論」の解説は、「型システム」の解説の一部です。
「型推論」を含む「型システム」の記事については、「型システム」の概要を参照ください。

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




型推論と同じ種類の言葉

このページでは「ウィキペディア小見出し辞書」から型推論を検索した結果を表示しています。
Weblioに収録されているすべての辞書から型推論を検索する場合は、下記のリンクをクリックしてください。
 全ての辞書から型推論を検索

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

辞書ショートカット

すべての辞書の索引

「型推論」の関連用語

型推論のお隣キーワード
検索ランキング

   

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



型推論のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのRust (プログラミング言語) (改訂履歴)、C SharpとJavaの比較 (改訂履歴)、Haskell (改訂履歴)、ユニフィケーション (改訂履歴)、型システム (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS