問題タブ [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 - scalaz List[StateT].sequence - パラメータ n の暗黙の値が見つかりませんでした: scalaz.Applicative
Scalaz ステート モナドの例の回答へのコメントに基づいて、StateT
2 つのステート トランスフォーマーを組み合わせる方法を見つけようとしています。State
私は非常に近いようですが、申請しようとしたときに問題が発生しましたsequence
。
だから私はStateT[StateMap, Random, Int]
、最初のランダムで空のマップ状態でアンラップできるものを持っているところまで行きました:
StateT
ここで、それらのリストを生成して使用sequence
し、 を呼び出せるようにしたいと思いますlist.sequence ! new Random(1L) apply Map[Int,Int]()
。しかし、これを試してみると、次のようになります。
何か案が?可能であれば、最後のストレッチに多少の助けを借りることができます。
scala - Scala でネストされたクラスの型クラス インスタンスを作成する
この最近の Stack Overflow questionで、作成者は、あるタイプのパーサーのリストを、そのタイプのリストを返すパーサーに変更したいと考えていました。Scalaz のsequence
for 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
を取得する方法については明確ではありません。のインスタンスが同じである必要があるため、次の素朴なアプローチはもちろん機能しません。Applicative
Parsers#Parser
Parsers
これが可能であることは明らかですが、私は Scala の型システムに慣れていないため、その方法を知ることができません。私が見逃している簡単なものはありますか?
以下の回答に応じて:私は-Ydependent-method-types
ルートを試しましたが、ここまで来ました:
問題は (ディディアードが指摘するように) を開始する方法が不明なことimplicit
です。したがって、このアプローチは機能しますが、文法に次のようなものを追加する必要があります。
その時点で、ミックスインのアプローチは明らかにはるかに魅力的です。
(補足として、上記のように簡単に書けると思っていましたが、コンパイラが - のすぐ隣にあるにもかかわらずApplicative.applicative[g.Parser]
、暗黙の値を見つけることができないというエラーが表示されます。Pure[g.Parser]
従属メソッド型に対する暗黙の動作方法)。
ここで私が望むことを達成するトリックを指摘してくれたretronymに感謝します。私は彼のコードから以下を抽象化しました:
これがスコープ内にある場合、 をParser
拡張する任意のオブジェクトでモナドのインスタンスを取得しますParsers
。キャストのせいでちょっとごまかしているが、それでもかなりきちんとしている.
scala - scalaz Arrowを使って構成可能?
私には2つの機能があります。
(DateTime, Invoice, User, Reference) => (Action, Iterable[Billable]) の単一の機能を持つようにこれらを構成するにはどうすればよいですか
これが私が望む貧乏人の方法です
scala - Scalazライブラリのインポート手法の推論
Scalazの例が常にこのインポート手法を使用する理由を知っている人はいますか?
それよりも:
?私は好みの背後にある理由が何であるかを理解しようとしています。
ありがとう!
scala - 型クラスを使用する場合、さまざまな方法でオブジェクトを処理する方法は?
Graph[G,V]
型のオブジェクトが型のG
頂点を持つグラフでもあることを示す型クラスがあるとしますV
。
A
これで、タイプのペアのセットをタイプの頂点を持つグラフとして扱うことができる暗黙的なものができましたA
(接続されていない頂点を表現できません...)。次のオブジェクトのスコープをインポートすることで、暗黙を使用できます。
また、頂点のコンテンツをマッピングして、次のことができるようにしたいとします。
しかし、にはすでにmap
定義されていSet
ます。同じデータ構造が異なる方法で同じもの(map
機能を持つもの)と見なされる可能性があるという問題にどのように対処しますか?
scala - ユースサイトできれいに呼び出すことができる、コンテキスト境界を持つファーストクラス関数を作成する方法は?
たとえば、スコープ内に (Scalaz の)length
型クラスのインスタンスがある場合に、指定された構造体の長さを返す関数を書きたいとします。Length
これは私が現在それを定義する方法です:
length(List(2, 3))
ただし、この場合、暗黙的なパラメーターが必要な最初の引数であるため、などの呼び出しは失敗します。
私length(implicitly)(List(2, 3))
はうまくいくと思っていましたが、セッションをクラッシュさせてしまいます (型推論は左から右に流れるので理解できます)。明示的な型注釈を提供することは機能しますが、耐えられないほど醜いです。
のようなファースト クラスの関数を記述しlength
、コンテキストをバインドして、使用場所で通常の関数と同じようにきれいに呼び出すことができる良い方法はありますか? (のようにlength(List(2, 3))
)
scala - オプションのリストと適用可能なファンクターの合計
List [Option [Int]]があり、適用可能なファンクターを使用して合計したいと思います。[1]から次のようなものになるはずだと理解しています
しかし、私はこれを書く正しい方法を理解することができません。誰かがこれを手伝ってくれたら嬉しいです。
どうもありがとうございます
編集
すべての素晴らしい答えをありがとう。
リストにNoneがある場合は、Noneを返します。Null/ExceptionをOption/Eitherに置き換えて、使用可能なコードを生成できるかどうかを確認しようとしています。
一部の関数がリストを埋めてしまうので、要素の1つがNoneであるかどうかを確認せずに、できるだけ簡単に処理したいと思います。これは、関数でチェックする必要がない例外と同様に機能するはずですが、呼び出し元に処理を任せます。
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 scalaz
scalaz_2.9.1-6.0.4-SNAPSHOT
import scalaz_2.9.1-6.0.4-SNAPSHOT._
何か案が?
scala - ジェネリックの奇妙なネストされた構造型
ジェネリックにネストされた構造型の奇妙な構造を誰かが説明できますか:
この例は Scalaz ライブラリからのものです: Functor.scala
なぜこの構造が必要なのですか?書くのは簡単ではありません:
また
scala - (scalaz)オプションで連鎖メソッドを呼び出す
私は持っています:
重複を排除するいくつかのscalaz魔法はありますか?
私は次のようなことをすることができます
しかし、それは少し厄介なようです。私は次のようなものを探していると思います