問題タブ [either]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
17307 参照

scala - Scalaで例外をスローする、「公式ルール」とは

私はCourseraのScalaコースをフォローしています。OderskyのScalaの本も読み始めました。

私がよく耳にするのは、関数型言語で例外をスローするのは良い考えではないということです。なぜなら、それは制御フローを壊し、通常は失敗または成功のいずれかを返すからです。また、Scala2.10はその方向に進むTryを提供するようです。

しかし、本とコースでは、マーティン・オーダスキーは(少なくとも今のところ)例外が悪いとは言っていないようで、彼はそれらを頻繁に使用しています。また、メソッドがassert/requireになっていることに気づきました...

最後に、ベストプラクティスに従いたいので少し混乱していますが、それらは明確ではなく、言語は双方向に進んでいるようです...

その場合、誰かが私に何を使うべきか説明してもらえますか?

0 投票する
3 に答える
511 参照

list - Haskell のリストから最初の権利を取る

まず、次Eitherのように生成される s の(無限の) リストがあります。

リストにはいくつかRightの s (常に有限数) が含まれ、同じLeft値が繰り返されます。私が必要とするのは、すべてのRights とLeftそれらの後に 1 つを取ることです。この特定のケースでは、たとえば関数を変更することでも実行できますが、最善の一般的な方法にも興味があります。

0 投票する
3 に答える
1292 参照

scala - Iterable[Eith[A,B]] を [A, Iterable[B]] に削減する

Iterable[Either[Throwable, String]] を、Either[Throwable, Iterable[String]] に減らす必要があります。この操作がかなり一般的かどうかはわかりませんが、 Iterable トレイトには何も見つかりませんでした。だから私はこの関数を書いた:

これがそうでない場合、誰かがより良い方法を見つけるのを手伝ってくれますか?

0 投票する
4 に答える
6386 参照

haskell - どちらかの左側のマッピング

私のアプリのどこかで、Either ParserError MyParseResultParsecからを受け取ります。この結果の下流では、他のライブラリを使用して他の解析が実行されます。解析のその第2フェーズ中に、ある種のエラーが発生する可能性があります。これをとして渡したいのですLeft Stringが、そのためには、結果をParsecからStringも変換する必要があります。Leftこれを実現するには、関数を使用してマップを作成できる関数が必要ですshow

私が考えているマッピング関数は次のようになります。

しかし、私はhackagedbに一致するものが見つからなかったことに非常に驚いていました。だから今、私は自分の問題に対して正しいアプローチを使用しているかどうか疑問に思っています。

標準ライブラリにそのような関数がないのはなぜですか?私のアプローチの何が問題になっていますか?

0 投票する
2 に答える
2963 参照

haskell - Applicative関手とどちらかからの左

私はすばらしい本を読み進めてきましたが、Applicative Functor には少し苦労しています。

次の例maxでは、2 つの Maybe ファンクターと return の内容に適用されますJust 6

以下の例ではLeft "Hello"、Either ファンクターの内容の代わりに が返されるのはなぜLeft "Hello World"ですか?

0 投票する
2 に答える
2639 参照

error-handling - EtherTはどのように機能しますか?

私は一日の半分を、コードのエラーに対処する方法として、EitherTを使用する方法を理解するために費やしています。

私はこのようなトランススタックを定義しました。

ReaderTこれは、 and関数のみを使用する限り非常にうまく機能しStateTます。私は今、私はこのようなものを書くことができるはずだという印象を受けています:

さらに重要なのは、パッケージからEither可能なはずの戻り値を取得することです。hoistEithererrors

私はモナド変換子に関する現実世界のハスケルの章を読み、をいじりましたlift。しかし、私はタイプチェックするものを何も得ることができません。

0 投票する
2 に答える
1185 参照

java - Javaのscala.Eitherを使用する

私はJavaのscalaライブラリ、具体的にはを返す関数を使用していますEither[A, B]。私のJavaコードでは、次のことができます。

result.right()を返しますがRightProjection、Javaにインポートできません(IntelliJを使用)。Javaでどちらかのオブジェクトを処理する適切な方法はありますか?

0 投票する
3 に答える
1155 参照

scala - タプルからいずれかの左を収集するにはどうすればよいですか?

型が [String, A] (A は複数の型) である一連の Yiher に対して一致を実行した後、左側の文字列をリストに蓄積したいと考えています。

タプルにしようとする.productIterator.toListと、List[Any] になってしまいます。失敗したケースを個別に処理すると (Rights と Lefts の組み合わせ)、指数関数的な数の case ステートメントが作成されます。

最後に List[Either[String, Any]] を取得して accLefts 呼び出しに渡すにはどうすればよいですか? それとも、試合以外のことをするべきでしたか?

0 投票する
1 に答える
786 参照

scala - モナド操作

モナド操作に慣れ始めたばかりです。Option タイプについては、Tony Morris のチート シートが役立ちました: http://blog.tmorris.net/posts/scalaoption-cheat-sheet/

したがって、最終的には次のことを理解するのは簡単に思えます。

  • map はオプション内の値を変換します
  • 変身する許可を平らにOption[Option[X]]するOption[X]
  • Option[Option[X]]flatMap はどういうわけか、 を生成してからフラット化するマップ操作ですOption[X]

少なくともそれは今まで私が理解していることです。


Each の場合、Either 自体は正しくバイアスされておらず、map / flatMap 操作がなく、射影を使用しているため、理解するのが少し難しいようです。

Scaladoc は読めますが、オプションのチート シートほど明確ではありません。誰かが基本的なモナド操作を説明するために、どちらかのシートチートを提供できますか?

それは私にEither.joinRightは少し似RightProjection.flatMapているようで、どちらかの場合と同等のようOption.flattenです。

Right がバイアスされている場合Either、Either.flatten は、Either.joinRight ではないでしょうか?

この質問では、オプションと理解のためにEiherとの理解を求めていますが、答えの1つは、マップ/フラットマップ/フィルターに脱糖する方法のためにモナドを混在させることはできないと言っています。

この種のコードを使用する場合:

これは、3 つのメソッド呼び出しすべてが常に返さなければならないということEither[Error,Something]ですか? メソッド呼び出しEither[Throwable,Something]があるとうまくいかないということですか?


編集: Try[Something] は、右バイアスの [Throwable,Something] とまったく同じですか?