問題タブ [scalaz7]
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.
scala - 式の下線
以下の抜粋でアンダースコアはどういう意味ですか. これは scalaz7 ライブラリの一部です:
それを使用する一般的なルールは何ですか?
scala - scalaz.Validation loopSuccess と loopFailure の仕組み
のメソッドの下でどのように機能するかを実際の例で誰かが説明できscalaz.Validation
ますか? と. loopSuccess
_loopFailure
ソースコードからの抜粋 (scalaz7):
scalaz.検証:
コンパニオン オブジェクト:
scala - Scalaz - List と State Monad を組み合わせて理解する
私は Scala コードで、特にスレッド状態のためにモナディック スタイルを使用することを計画しています。これは、3 つのモナド関数を組み合わせた単純な例です (副作用のみを考慮します)。
これはすべて自明であり、期待どおりに機能します。List
しかし、このアプローチが私にとって本当に役立つためには、それをfor-comprehensionと組み合わせられるようにしたいと考えています。これは、私が何を意味するかを示すための少しの (動作しない) コードです。
基本的に、 a からの引数に基づいてモナドを結合できるようにしたいと考えていますList
- の各要素でモナド関数を実行し、list
副作用を累積します。サンプルの構文が機能しないことは理解しており、機能しない理由もわかります。クリーンでエレガントな等価物を探しているだけです。
scalaz モナド トランスフォーマーを使用して、より具体的にはこれを実現できると確信してStateT
いますが、どうやってそれを行うのかはよくわかりません。
PS。私は Scalaz 7.0-M3 を使用しているため、構文は最も一般的な 6.x とは少し異なる場合があります。
scala - オブジェクトのフィールド検証を処理するための最良の方法=>どちらか/試行(scala 2.10)/ ValidationNEL(scalaz)
ビルダーパターンを使用して構築されたオブジェクトを想定しましょう。
このビルダーパターンには、build
フィールドの検証とターゲットタイプへの変換に焦点を当てたメソッドが含まれます。
この検証は、以下を使用して実装できます。
Either[FailureObject, TargetObject]
タイプTry[TargetObject]
(Scala 2.10の新機能)Validation[FailureObject, TargetObject]
またはValidationNEL[FailureObject, TargetObject]
scalazライブラリから
Validation
オーバーEither
タイプの主な利点の1つは、Validation
「箱から出して」障害を蓄積できることです。
しかし、「新しい」Try
方法はどうでしょうか。Try
箱から出してすぐに使える「モナディック」メソッドもあることに気づきました。たとえばmap
、 。flatMap
の助けを借りずにどちらのタイプでも本当に欠けていたものですProjection
。
Try[FieldType]
したがって、各フィールド検証メソッドがaを返し、より正確には、障害が発生した場合にTry[SpecificFieldExceptionType]
;を返すことを想像します。このネストされたものString
には、メソッド全体で蓄積できるメッセージフィールドとrootCauseフィールドが含まれていますbuild
。
Scala 2.10を使用して、Try
ビルダーパターンのような単純な検証のためにscalaz検証ライブラリを置き換える練習をすることができますか?
**編集****
Try
ソースコードを読み取ることにより、Try
いくつかの例外を蓄積できないように聞こえ、したがってフェイルファストに向けられます。Try.flatMap
潜在的な以前の失敗を返すことさえあるので、蓄積の概念がありません:
それどころか、ValidationNEL
蓄積機能を処理します。
確認はありますか?
scala - Listが半群であるのにSeqがそうではないのはなぜですか?
私はscalazにかなり慣れていないので、次のコードが機能する理由を理解しようとしています。
しかし、これはそうではありません...
セミグループのマップは暗黙的に表示されますが、リストまたはシーケンスのマップは表示されません。
カップルの質問:
- ListSemigroupの暗黙の場所はどこですか?
- Seq用のものがないのはなぜですか?
scala - ポイントリーダーモナドscala
コンテキストpoint
内の値を簡単に取得する方法はありますか?
オブジェクトを使用してコンテキストを無視できます。Reader
Reader
point
このための具体的な方法があるようです。なるほど、それは で定義されていApplicative
ます。Reader
値をコンテキストに入れる方法には、いくつかのトリックがあると思います。
scala - scalaz トランポリンと IO
この質問はこの他の質問に関連していますが、より単純なケースに縮小されています。
次のインポートを想定しています。
次のジェネレーターがあります。
および次の非末尾再帰定義:
結果は次のとおりです。
IOマップ/フラットマップもトランポリンするようにするにはどうすればよいですか? 理解のために、2番目の内部に他のネストされたスタックが作成されているようです。抽出された io 値をTrampolineT
使用してサスペンドに再ラップする を作成する必要がありますか?unsafePerformIO