問題タブ [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.

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

scala - scalaz List[StateT].sequence - パラメータ n の暗黙の値が見つかりませんでした: scalaz.Applicative

Scalaz ステート モナドの例の回答へのコメントに基づいて、StateT2 つのステート トランスフォーマーを組み合わせる方法を見つけようとしています。State

私は非常に近いようですが、申請しようとしたときに問題が発生しましたsequence

だから私はStateT[StateMap, Random, Int]、最初のランダムで空のマップ状態でアンラップできるものを持っているところまで行きました:

StateTここで、それらのリストを生成して使用sequenceし、 を呼び出せるようにしたいと思いますlist.sequence ! new Random(1L) apply Map[Int,Int]()。しかし、これを試してみると、次のようになります。

何か案が?可能であれば、最後のストレッチに多少の助けを借りることができます。

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

scala - Scala でネストされたクラスの型クラス インスタンスを作成する

この最近の Stack Overflow questionで、作成者は、あるタイプのパーサーのリストを、そのタイプのリストを返すパーサーに変更したいと考えていました。Scalaz のsequencefor applicative functor でこれを行うことを想像できます:

ここでは、整数のリストを返す 3 つのパーサーのリストを取得し、それを整数のリストのリストを返すパーサーに変換します。残念ながら、Scalaz は のApplicativeインスタンスを提供していないためParser、このコードはコンパイルされませんが、簡単に修正できます。

これは期待どおりに機能します。たとえば、 がparser("1 2 3 4 5 6")得られます。List(List(1), List(2, 3), List(4, 5, 6))

(インスタンスを与えることができることはわかっていApplyますが、Bindインスタンスの方がより簡潔です。)

を拡張するたびにこれを行う必要がないのは良いことですが、より一般的なインスタンスParsersを取得する方法については明確ではありません。のインスタンスが同じである必要があるため、次の素朴なアプローチはもちろん機能しません。ApplicativeParsers#ParserParsers

これが可能であることは明らかですが、私は Scala の型システムに慣れていないため、その方法を知ることができません。私が見逃している簡単なものはありますか?


以下の回答に応じて:私は-Ydependent-method-typesルートを試しましたが、ここまで来ました:

問題は (ディディアードが指摘するように) を開始する方法が不明なことimplicitです。したがって、このアプローチは機能しますが、文法に次のようなものを追加する必要があります。

その時点で、ミックスインのアプローチは明らかにはるかに魅力的です。

(補足として、上記のように簡単に書けると思っていましたが、コンパイラが - のすぐ隣にあるにもかかわらずApplicative.applicative[g.Parser]、暗黙の値を見つけることができないというエラーが表示されます。Pure[g.Parser]従属メソッド型に対する暗黙の動作方法)。


ここで私が望むことを達成するトリックを指摘してくれたretronymに感謝します。私は彼のコードから以下を抽象化しました:

これがスコープ内にある場合、 をParser拡張する任意のオブジェクトでモナドのインスタンスを取得しますParsers。キャストのせいでちょっとごまかしているが、それでもかなりきちんとしている.

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

scala - scalaz Arrowを使って構成可能?

私には2つの機能があります。

(DateTime, Invoice, User, Reference) => (Action, Iterable[Billable]) の単一の機能を持つようにこれらを構成するにはどうすればよいですか

これが私が望む貧乏人の方法です

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

scala - Scalazライブラリのインポート手法の推論

Scalazの例が常にこのインポート手法を使用する理由を知っている人はいますか?

それよりも:

?私は好みの背後にある理由が何であるかを理解しようとしています。

ありがとう!

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

scala - 型クラスを使用する場合、さまざまな方法でオブジェクトを処理する方法は?

Graph[G,V]型のオブジェクトが型のG頂点を持つグラフでもあることを示す型クラスがあるとしますV

Aこれで、タイプのペアのセットをタイプの頂点を持つグラフとして扱うことができる暗黙的なものができましたA(接続されていない頂点を表現できません...)。次のオブジェクトのスコープをインポートすることで、暗黙を使用できます。

また、頂点のコンテンツをマッピングして、次のことができるようにしたいとします。

しかし、にはすでにmap定義されていSetます。同じデータ構造が異なる方法で同じもの(map機能を持つもの)と見なされる可能性があるという問題にどのように対処しますか?

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

scala - ユースサイトできれいに呼び出すことができる、コンテキスト境界を持つファーストクラス関数を作成する方法は?

たとえば、スコープ内に (Scalaz の)length型クラスのインスタンスがある場合に、指定された構造体の長さを返す関数を書きたいとします。Length

これは私が現在それを定義する方法です:

length(List(2, 3))ただし、この場合、暗黙的なパラメーターが必要な最初の引数であるため、などの呼び出しは失敗します。

length(implicitly)(List(2, 3))はうまくいくと思っていましたが、セッションをクラッシュさせてしまいます (型推論は左から右に流れるので理解できます)。明示的な型注釈を提供することは機能しますが、耐えられないほど醜いです。

のようなファースト クラスの関数を記述しlength、コンテキストをバインドして、使用場所で通常の関数と同じようにきれいに呼び出すことができる良い方法はありますか? (のようにlength(List(2, 3)))

0 投票する
6 に答える
2407 参照

scala - オプションのリストと適用可能なファンクターの合計

List [Option [Int]]があり、適用可能なファンクターを使用して合計したいと思います。[1]から次のようなものになるはずだと理解しています

しかし、私はこれを書く正しい方法を理解することができません。誰かがこれを手伝ってくれたら嬉しいです。

どうもありがとうございます

[1] Scalaでオプション値を組み合わせる方法は?

編集

すべての素晴らしい答えをありがとう。

リストにNoneがある場合は、Noneを返します。Null/ExceptionをOption/Eitherに置き換えて、使用可能なコードを生成できるかどうかを確認しようとしています。

一部の関数がリストを埋めてしまうので、要素の1つがNoneであるかどうかを確認せずに、できるだけ簡単に処理したいと思います。これは、関数でチェックする必要がない例外と同様に機能するはずですが、呼び出し元に処理を任せます。

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

scala - sbtなしでスタンドアロンのscalazjarを作成して使用する

リポジトリ(バージョン6.0.4)からscalazスナップショットをダウンロードしました。
スタンドアロンのjarファイルを作成し、それをscala libディレクトリーに入れて、sbtなしでscalazを使用したいと思います。

私はscala-lang.orgからscalaパッケージを持っていて、/ opt/scalaに保存して
います。

  • 風袋引きされていないscalazディレクトリに移動します
  • scalazプロジェクトからsbtを実行します
  • scalazプロジェクトをコンパイルする
  • パッケージを作成する(packageコマンドで)
  • sbtはjarをfull/target / scala-2.9.1/scalaz-full_2.9.1-6.0.4-SNAPSHOT.jarにします
  • 他のjarも生成します:full / lib / sxr_2.9.0-0.2.7.jar
  • 両方のjarファイルを/opt/ scala/libに移動しました

この後、scala replを試しましたが、scalazをインポートできません。scalaz._、、をインポートしようとしましたがScalaz._、 機能しません。入力後のREPLコードの完了は、次のことを示唆しています。 しかし、動作しないorg.scalaz._scalaz-core._import scalazscalaz_2.9.1-6.0.4-SNAPSHOT
import scalaz_2.9.1-6.0.4-SNAPSHOT._

何か案が?

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

scala - ジェネリックの奇妙なネストされた構造型

ジェネリックにネストされた構造型の奇妙な構造を誰かが説明できますか:

この例は Scalaz ライブラリからのものです: Functor.scala

なぜこの構造が必要なのですか?書くのは簡単ではありません:

また

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

scala - (scalaz)オプションで連鎖メソッドを呼び出す

私は持っています:

重複を排除するいくつかのscalaz魔法はありますか?

私は次のようなことをすることができます

しかし、それは少し厄介なようです。私は次のようなものを探していると思います