問題タブ [scalaz]
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 - akka-camel vsscalaz-camel
誰かがakka-camel対scalaz-camel-akkaの評価をしましたか?私はscalazがもたらす機能的なアプローチが好きで、scalaz-camel-akkaを少し使用しましたが、実際にはakka-camelを使用していません。
いくつかの比較点に非常に興味があります。
scala - scalazでのデカルト積トラバース
論文Essenceofthe IteratorPatternに関するEricTorreborreのブログ投稿で、彼はトラバースのデカルト積がトラバースでもあることを説明しています。
私には理解できないので、誰かがscalazライブラリを使用してこの例を見せてもらえますか?List[Int]
問題は、私が次の両方を提供したいということだとしましょう。
- リスト内の要素の
Int
合計 - その要素は、 sの
List[String]
文字列表現に「Z」を追加することによって作成されますInt
私の理解では、これを使用してこれを行うことができますtraverse
が、このソリューションとは異なり、実際に構造を1回だけトラバースするような方法で行うことができます。
注1-これを行うには他の方法があり、この例ではトラバースする必要はなく、トラバースは必ずしもそれを解決するための最も明確な方法でもありません。しかし、私はトラバースを理解しようとしているので、述べられているように質問に対する答えを本当に探しています
編集-を使用してこれを行う方法を示してくれた以下のmissingfaktorState
に感謝します。私が知りたいのは、2つの独立した計算をどのように構成できるかということだと思います。例えば; 私の関数は概念的に次のとおりです。
これらの蓄積メカニズムを互いに独立させてから、どちらかまたは両方List[Int]
を使用してトラバースするかどうかを選択したいと思います。私はこのようなコードを想像しました:
エリックはこれが可能であることを暗示していますが、私はそれを行う方法がわかりません〜つまり、それらを構成できるように定義する方法shape
やaccum
、それらを構成する方法がわかりません。
注2 は、文字通り上記のシグニチャを持つ関数であることを意味するものではありませんshape
。accum
これらは、上記のトラバーサルを実行するために必要なタイプの式です。
validation - Scalaz Validation、内部値の検証
検証オブジェクトがあります
たとえば、実際の整数値が 100 に等しいかどうかを確認するために、2 番目の検証を行う必要があります。私が行った場合
私は得る:
vv を Validation[String, Option[Int]] としても最も簡潔な方法で取得するにはどうすればよいですか
=========
私自身から可能な解決策を見つけました:
機能しますが、簡潔でエレガントに見えません
==============
私自身の2番目の解決策ですが、複雑すぎるようにも見えます:
scala - 2つのリストの要素を組み合わせる
2つのリストがあると仮定します。
私が欲しいのは:List("a1", "b2", "c3")
つまり、l1のn番目の要素をl2のn番目の要素に追加することです
それを達成する方法は次のとおりです。
Applicativeでそれを達成できるかどうかだけ疑問に思います。私は試した :
しかし、それはすべての組み合わせを与えます:
何か案が?
ありがとうございました
ブノワ
scala - より複雑な計算での scalaz 状態の使用
scalazState
を使用して複雑なステートフルな計算を実行する方法を理解しようとしています。問題は次のとおりです。
List[Int]
潜在的な約数の aと数の a を指定して、一致するペア (除数、数)List[Int]
の ] を見つけます。ここで、約数は最大 1 つの数と一致することが許可されています。List[(Int, Int)
テストとして:
そして、次の入力を使用します。
最大で 3 試合を獲得できます。リスト lr をトラバースして発生する順序で一致を作成する必要があると規定すると、一致は次のようになります。
したがって、次の 2 つのテストに合格する必要があります。
緊急の解決策は次のとおりです。
remaining
の状態と累積を更新する必要があることに注意してくださいmatches
。scalaz traverse のお仕事みたいですね!
私の無駄な作業は、私をここまでさせました:
scala - Scalaz検証:エラーを集約するか、成功を返します
scalazでそのような振る舞いを実装することはどのように可能ですか?
私の解決策は複雑に見えますが、それを簡潔にする他の方法が存在すると思います。
=====================
私の2番目の解決策:
次のように使用します。
validation - scalazを使ってApplicativeに関数を作成する方法
Scalaz 6を学びながら、検証を返すタイプセーフなリーダーを作成しようとしています。これが私の新しいタイプです:
そして、intとstrings(*)のマップリーダーを作成する2つの関数があります。
次のマップがあるとします。
名前と年齢を取得するために2つのリーダーを作成できます。
Boy
すべて正常に動作しますが、インスタンスを構築するために両方のリーダーを作成したいと思います。
私の最善の策は次のとおりです。
期待どおりに機能しますが、2つのレベルのアプリケーションビルダーでは表現が厄介です。次の構文を機能させる方法はありますか?
(*)https://gist.github.com/1891147の完全で実行可能な実装
更新:上記の行またはダニエルの提案を試したときに表示されるコンパイラエラーメッセージは次のとおりです。
scala - Scalaz バリデーションを作成する
バリデーションに Scalaz を使用したいと考えており、さまざまなコンテキストでバリデーション関数を再利用できるようにしたいと考えています。私はScalazの初心者です。
これらの簡単なチェックがあるとしましょう:
私は、一方からの出力が他方に供給される検証を構成できるようにしたいと考えています。理解のために、または経由で簡単にそれを行うことができflatMap
ましたが、それよりも良い方法があるに違いないと感じています。
また
Scalaz の専門家からの意見はありますか?