コンパイラが間違っていることを知る方法

ソフトシッパー

私は次の機能を持っています:

def apply[A,B](fa: Option[A])(ff: Option[A => B]): Option[B] = (fa, ff) match {
  case (None, _) => None
  case (Some(_), None) => None
  case (Some(a), Some(f)) => Some(f(a))
}

そしてそれはうまくコンパイルされます。

しかし、次のように関数を変更するとき:

def apply[A,B](fa: Option[A])(ff: Option[A => B]): Option[B] = (fa, ff) match {
  case (None, _) => None
  case (Some(_), None) => Some("Hello")
  case (Some(a), Some(f)) => Some(f(a))
}

コンパイラは、関数が型に準拠していないと文句を言いOption[B]ます。

apply 関数に渡してSome(1)returnSome("Hello")すると、別のタイプが返され、次に入力が返されます。私の意見では、入力タイプの次に別のタイプが返されます。

コンパイラは、値の型が準拠していないことOption[B]どのように認識し、最初の例にNone準拠Option[B]しているのはなぜですか?

jwvh

1 番目 -NoneすべてのOption[]タイプに有効な値です言い換えると...

val optx: Option[X] = None

... はどのタイプにも有効ですX

2番目 - コンパイラは何について知っていBますか? ffそうでない場合はNone、 type の出力が生成されBます。このapply()メソッドの出力は、同じタイプである必要がありますが、 でBラップされている必要がありますOption

Some("Hello")つまりOption[String]出力のみを生成するように制約Option[B]されていることをコンパイラーに通知されていないため、準拠していませんffString

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コンパイラが間違ったデータ型について不平を言っている

分類Dev

スカラのflatMap、コンパイラはそれが間違っていると言います

分類Dev

KnockoutコンポーネントでJSが間違ったパスでjsファイルを探していることを要求する

分類Dev

MinGWのコンパイルが間違っている

分類Dev

CMakeインストールがライブラリを見つけることができず、間違ったコンパイラバージョンを指している

分類Dev

CMakeインストールがライブラリを見つけることができず、間違ったコンパイラバージョンを指している

分類Dev

コンパイラは到達不能ステートメントがあると言っていますが、何が間違っているのですか?

分類Dev

パーサーでエラーをコンパイルします。入力ファイルが間違っていると思いますが、何が間違っているのかわかりません。

分類Dev

同じマシンでコンパイルされたプログラムを実行すると、GLIBCXXのバージョンが間違っている

分類Dev

Javaキャスト:コンパイラが間違っているか、言語仕様が間違っているか、それとも私が間違っているのですか?

分類Dev

Intelコンパイラが間違ったヘッダーを使用している

分類Dev

私が間違っているこのエラー「未定義のプロパティ 'バインド'を読み取ることができません」を修正する方法

分類Dev

elixir-`i 123`のようなことをすると、コンパイルエラーが発生します。私は何が間違っているのですか?

分類Dev

引数名が間違っているCoffescriptコンパイルコンストラクター

分類Dev

phpMyAdminでパイントすると、生成時間が間違っています

分類Dev

このプログラムを実行しようとしていますが、「コンパイルエラー、引数の数が間違っている、またはプロパティの割り当てが無効です」というエラーが発生します

分類Dev

あいまいなシンボルに対して間違った行参照を与えるVisualC ++コンパイラ

分類Dev

JSモジュールバンドラー(Webpackなど)がコンパイルされていると言うのは間違っていますか?

分類Dev

openmpを使用すると間違った出力を出すIntelCコンパイラ

分類Dev

符号付きと符号なしの間の変換についてこの警告が表示される理由がわかりません。コンパイラが間違っていますか?

分類Dev

plistファイルのどの行が間違っているかを知る方法

分類Dev

基本クラスで可能なインターフェイスをテストすることが間違っている理由がわかりません

分類Dev

UITableViewセルのアイコンとラベルが間違って配置されている

分類Dev

誰もがMavenのコンパイル問題を修正する方法を知っていますか?

分類Dev

ボタンに識別子を割り当てて、コンソールでどのボタンの制約が間違っているかを知ることができますか?

分類Dev

パンダの棒グラフにMaxNLocatorを使用すると、ラベルが間違ってしまいます

分類Dev

サイズが間違っているパラメータ

分類Dev

C コードをベア メタル (raspberry pi) にコンパイルするときに何が間違っているのでしょうか。

分類Dev

ドライブに書き込むときにパンダの日付が間違っている

Related 関連記事

  1. 1

    コンパイラが間違ったデータ型について不平を言っている

  2. 2

    スカラのflatMap、コンパイラはそれが間違っていると言います

  3. 3

    KnockoutコンポーネントでJSが間違ったパスでjsファイルを探していることを要求する

  4. 4

    MinGWのコンパイルが間違っている

  5. 5

    CMakeインストールがライブラリを見つけることができず、間違ったコンパイラバージョンを指している

  6. 6

    CMakeインストールがライブラリを見つけることができず、間違ったコンパイラバージョンを指している

  7. 7

    コンパイラは到達不能ステートメントがあると言っていますが、何が間違っているのですか?

  8. 8

    パーサーでエラーをコンパイルします。入力ファイルが間違っていると思いますが、何が間違っているのかわかりません。

  9. 9

    同じマシンでコンパイルされたプログラムを実行すると、GLIBCXXのバージョンが間違っている

  10. 10

    Javaキャスト:コンパイラが間違っているか、言語仕様が間違っているか、それとも私が間違っているのですか?

  11. 11

    Intelコンパイラが間違ったヘッダーを使用している

  12. 12

    私が間違っているこのエラー「未定義のプロパティ 'バインド'を読み取ることができません」を修正する方法

  13. 13

    elixir-`i 123`のようなことをすると、コンパイルエラーが発生します。私は何が間違っているのですか?

  14. 14

    引数名が間違っているCoffescriptコンパイルコンストラクター

  15. 15

    phpMyAdminでパイントすると、生成時間が間違っています

  16. 16

    このプログラムを実行しようとしていますが、「コンパイルエラー、引数の数が間違っている、またはプロパティの割り当てが無効です」というエラーが発生します

  17. 17

    あいまいなシンボルに対して間違った行参照を与えるVisualC ++コンパイラ

  18. 18

    JSモジュールバンドラー(Webpackなど)がコンパイルされていると言うのは間違っていますか?

  19. 19

    openmpを使用すると間違った出力を出すIntelCコンパイラ

  20. 20

    符号付きと符号なしの間の変換についてこの警告が表示される理由がわかりません。コンパイラが間違っていますか?

  21. 21

    plistファイルのどの行が間違っているかを知る方法

  22. 22

    基本クラスで可能なインターフェイスをテストすることが間違っている理由がわかりません

  23. 23

    UITableViewセルのアイコンとラベルが間違って配置されている

  24. 24

    誰もがMavenのコンパイル問題を修正する方法を知っていますか?

  25. 25

    ボタンに識別子を割り当てて、コンソールでどのボタンの制約が間違っているかを知ることができますか?

  26. 26

    パンダの棒グラフにMaxNLocatorを使用すると、ラベルが間違ってしまいます

  27. 27

    サイズが間違っているパラメータ

  28. 28

    C コードをベア メタル (raspberry pi) にコンパイルするときに何が間違っているのでしょうか。

  29. 29

    ドライブに書き込むときにパンダの日付が間違っている

ホットタグ

アーカイブ