問題タブ [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 投票する
4 に答える
25933 参照

scala - どちらかを使用してScalaコードの失敗を処理する

Optionモナドは、Scalaで何かまたは何もないことに対処するための優れた表現方法です。しかし、「何も起こらない」ときにメッセージをログに記録する必要がある場合はどうなるでしょうか。Scala APIのドキュメントによると、

どちらかのタイプは、scala.Optionの代わりによく使用されます。ここで、Leftは(慣例により)失敗を表し、RightはSomeに似ています。

ただし、Eitherを使用したベストプラクティス、または処理の失敗にEitherを含む実際の良い例を見つけることができませんでした。最後に、自分のプロジェクト用に次のコードを考え出しました。

(これは実際のプロジェクトからのスニペットであるため、それ自体ではコンパイルされないことに注意してください)

Eitherコードでどのように使用されているか、および/または上記のコードをリファクタリングするためのより良いアイデアを知っていただければ幸いです。

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

haskell - このEither-monadコードがタイプチェックを行わないのはなぜですか?

'baby.hs'のこのコードフラグメントは、ひどいコンパイルエラーを引き起こしました:


なぜこれが起こるのですか?そして、どうすればこのコードをコンパイルできますか?助けてくれてありがとう〜

分かりました。そして私はそれがコンパイルされるのを見るためにコードを調整しました:

正常にコンパイルされます!しかし...さらに質問があります:

'どちらか'をモナドにし、' return =Right'を取得しました...どうすれば'return= Left'を取得できますか?私はこれを試しましたが失敗しました:

または:インスタンスモナド(\ x->いずれかのxa)

まったくコンパイルされません!

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

scala - 返品の処理方法

スカラ関数が

返された結果を処理する正しい方法は何ですか? val a = A() と ?

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

haskell - 標準の(どちらか)モナドインスタンスはありませんか?

どこかにどちらかのインスタンスがあるような印象を受けましたが、見つからないようです。示されているように、Control.Monad、Control.Monad.Instances、およびData.Eitherをインポートしようとしました

しかし、ghcはそれが推論できなかったと私に言います(モナド(どちらか))。追加する

コードをコンパイルしますが、このインスタンス宣言は非常に一般的であるため、標準モジュールにまだ存在していない場合は意味がありません。もしそうなら、どこでそれを見つけるべきですか、そうでなければ、これには理由がありますか?

- - - - - - - 編集 - - - - - - - -

以下のuser31708による回答(「ベース4.6の時点では、インスタンスはData.Either自体にあります。」)が現在正しい回答であると私が考えていることに注意してください。この場合、選択された回答が質問された時点で正解であった場合、選択された回答を再割り当てする適切なプロトコルがわからないため、そのままにしておきます。これに関する別のガイドラインがある場合は、私を訂正してください。

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

haskell - どちらがFunctorのインスタンスであるかを理解する

余暇にはHaskellを学んでいるので、これは初心者の質問です。

Either a私の読書で、私はどのようにインスタンスが作成されるかを示す例に出くわしましたFunctor

ここで、値コンストラクターの場合に実装がマップされる理由を理解しようとしていますが、 ?Rightの場合はマップされません。Left

これが私の理解です:

まず、上記のインスタンスを次のように書き直します

今:

  1. そんなこと知ってるfmap :: (c -> d) -> f c -> f d

  2. で代用fするEither afmap :: (c -> d) -> Either a c -> Either a d

  3. のタイプRight (g x)Either a (g x)であり、のタイプg xdであるため、のタイプはでRight (g x)ある必要がありますEither a d。これは、私たちが期待するものですfmap(上記の2を参照)。

  4. ここでLeft (g x)、同じ理由を使用して、そのタイプがEither (g x) b、つまりEither d b、期待するものではないことを示すことができfmapます(上記の2を参照)。dこれは、最初のパラメーターではなく、2番目のパラメーターである必要があります。したがって、にマップすることはできませんLeft

私の推論は正しいですか?

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

scala - Scala - コンパクトにするためにタイプを定義するか、読みやすくするために明示的に記述しますか?

Scala では、次のことができます。

また

前者は結果の型についてより明示的であるため、読みやすくなっていますが、異なる実装では、Either[...] を何度も再入力する必要があります。これは後者で解決されますが、読者は一見しただけでは結果について多くの結論を下すことができません。

戻り値の型がOptionの代わりである場合、Either当然、以前のバージョンに固執します。多くの型パラメーターを持つより複雑な型の場合、2 番目の方がより有益です。Eitherミッドフィールドのどこかにいます。

私の直感では、長期的には後者の方が維持しやすいということです。どう思いますか?これに関する慣行はありますか?

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

haskell - Haskellで「Either」を使用する

タイプの2つの値とがt1あります。-valueは、エラー処理に使用されます。これらの値は、を返す関数で使用されます。t2Either String TypeLeftEither String Type

私がやりたいのは、とが両方とも-valuesであり、を満たすかどうかを確認t1するt2ことRightですp :: Type -> Bool。もしそうなら、私は戻りたいですRight (the type inside t1)t1とが両方ともt2-valuesRightであるが、を満たさない場合はp、を返しLeft someStringます。またはが値のt1場合t2Leftその値を渡したいだけです。

どうすればエレガントな方法でこれを行うことができますか?どちらかをモナドとして使用するのが正しいことだと思いますが、どうすればよいかわかりません。

0 投票する
9 に答える
15367 参照

scala - どちらかのリストをどちらかのリストに変える最良の方法は?

私は以下のようないくつかのコードを持っています、そこで私はどちらかのリストを持っています、そして私はそれをどちらかのリストに変えたいです...特に(この場合)、リストに左があれば、私は戻りますそれらのリストの左側、そうでない場合は権利のリストの右側を返します。

電話getをかけると、何かが足りないような気がします。

これを行うためのより慣用的な方法はありますか?

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

haskell - Data.Either を実装しようとしています

Applicative FunctorとEitherFunctor を学ぶために、 が型クラス と でどのように実装されているかを見るのはとても楽しいと思いました。もちろん、先に進んでコードを読むこともできますが、物事をよりよく理解するために、自分で物事を実装してみる方が便利だと思います。FunctorApplicative

参考までに、このプレゼンテーションの結果の Haskell バージョンを実装しようとしていますhttp://applicative-errors-scala.googlecode.com/svn/artifacts/0.6/chunk-html/index.html

とにかく、これは私がこれまで持っているものです

しかし、これを実行しようとするたびにghci、次のエラーメッセージが表示されます: -

これがなぜなのかよくわかりません。誰か助けてもらえますか?

0 投票する
5 に答える
6705 参照

haskell - どちらが左(または右)であるかを尋ねることはできますか?

通常はパターン マッチだけでよいことはわかっていますが、次の関数が役立つ場合もあります。

標準ライブラリにそのようなものはありますか?