問題タブ [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 - Scalaz 7 - 型エイリアスを使用すると Reader の型クラス解決があいまいになる理由
テストするコード:
これは、Scala の型コンストラクター推論チケットの高次統合に関連していますか? もしそうなら(そうでなくても)、a と b のケースでここで何が起こるか説明できますか?
いつラムダ型を使用し、いつ型エイリアスを使用して、予期しないエラーなしですべてがうまくいくかについてのガイドラインはありますか?
validation - 検証とscalaz7の組み合わせ
次の関数が与えられます:
関数を作成するなど、それらを組み合わせたいと思います。この関数はfoo
、最終的bar
には、生成されたの各要素を呼び出します。たとえば、 :Seq
を取得します。ValidationNEL[String,Seq[C]]
Scalaz 7のドキュメントは非常に短く、関連する例は見つかりませんでした。
scala - 検証がモナドではないのはなぜですか?
ユースケースの例:
エラー:型クラスによって分類されたscalaz.Validation[String,Int]
種類の型コンストラクターに型を適用解除できませんM[_]
scalaz.Bind
エラーの原因は、コンパイラがインスタンスを見つけられなかったためだと思います。Monad
Validation[String, Int]
次のように、自分で作成できます。
しかし、なぜまだValidation
それを持っていないのですか?結局のところ、Validation
すでにbind
メソッドが定義されています。
さらに、別の複雑なエラーimport Validation._
のために、私はもう一緒に持つことができませimport Instances._
ん(これは私が理解するのに時間がかかりました...)...
あいまいな暗黙の値:両方のようなもの(私のインスタンス)と特性のメソッド...両方ともいくつか一致します... validationMonad
ValidationInstances1
ValidationInstances2
Functor of Validation
scalazのソースを変更する必要がありますか?または私は完全に何かが欠けています〜?
助けてください〜
scalaz7.0.0-M2を使用しています
scala - Scalaz7の`シーケンス`はどこにありますか
私はScalazを学んでいて、すでにScalaz7を利用しているプロジェクトがあります。この質問に続いて、私は関数を使用したいと思います
(自分で書くのは難しいというわけではありません)。しかし、前述の質問はScalaz6に言及しています。
Scalaz7のシーケンス関数はどこにありますか?
scala - Scalaz で自分の道を見つける
重複の可能性:
良い scalaz の紹介
私は Scalaz についてもっと学びたいと思っています。おそらく Scalaz7 を使用して、脳が安定していると宣言されたら、脳の再配線を避けたいと思っています。私の問題は、Scalaz に多くの機能が含まれていることです。そのほとんどは他の部分から独立していることを意図していますが、Scalaz が提供するグローバルな機能と、それがどのように構成されているかを俯瞰したいと思います。私の知る限り、Scalaz は、とりわけ、
Functor
、Applicative
およびMonad
特性、Validation
のような新しいモナド- モナド変換子 (
OptionT
,EitherT
....) Itereatee
sLens
エスZipper
s
これに加えて、多くの暗黙的な変換some
と、標準ライブラリと重複するが型に関してより適切に動作するような新しいコンストラクターがあります。
私はこれらの構造のほとんどについて基本的な理解を持っていますが、どの概念についても流暢ではありません。
ライブラリを学習する順序、モジュール間に存在する論理的な依存関係について何か提案はありますか? より一般的には、ライブラリの高レベルの概要はどこにありますか?
編集ほとんどの回答は、モナドなどの関数型プログラミングの基本コンポーネントの学習に向けられているようです。そのため、より正確にしようと思います。私は Haskell の基本的な知識と数学者のバックグラウンドを持っているので、私の問題は圏論や基本的な関数型プログラミングとは関係ありません。
私の問題は、Scalaz が巨大なライブラリであることです。どこで何を見つければよいのか、さまざまなデータ型でどのメソッドが利用可能または有用なのかわかりません。私が本当に必要としているのは、たとえば、破棄する必要のあるリソースを繰り返し処理したい場合、反復対象とそれを使用して実行できる操作の種類を検討する必要があることを教えてくれるマップです。ライブラリで利用可能な機能のパノラマのようなものです。
logging - Scalaz 7:どちらかの値をプレーンな値とログに記録されたエラーに変換する慣用的な方法?
関数が与えられた場合、 sをログに記録しながら、 sのリストの結果f: A => E \/ B
を収集する慣用的な方法は何ですか?B
A
E
私は次のことを思いついた(部分的にこのSOの質問に答えている間):
より短い/より良い/より制限の少ない/より一般的な方法はありますか?
list - Scala: リストから繰り返される値を抽出する
多くの値が等しいかどうかを確認し、場合によっては共通の値を抽出する必要があることがよくあります。つまり、次のように機能する関数が必要です。
seqsに追加tailOption
する pimp があると仮定すると (1 つ書くのは簡単で、scalaz に 1 つある)、1 つの実装は次のようになります。
そのようなもの (おそらくもっと一般的なもの) は既に Scalaz にあるのでしょうか、それとももっと簡単に書く方法はありますか?
scala - PlayでのScalaz7の使用
Playと一緒にScalaz7を使用するのに少し問題があります。現在、私はScala2.9.1とscalaz-core7.0-SNAPSHOTで標準のPlayディストリビューションを使用しています。これは、公式ではないように見えるリポジトリhttp://repo.typesafe.com/typesafe/repo/にあります。これについてはよくわかりませんが、すでにhttp://repo.typesafe.com/typesafe/snaphots/とhttp://repo.typesafe.com/typesafe/releases/があり、リポジトリが正式に承認されているかどうかはわかりません。と維持されます。今は上がっていますが、数日前に消えたようです。
スナップショットリポジトリにscalaz-core7.0-M3が表示されますが、Scala2.9.2のみです。7.0-SNAPSHOTと7.0-M3のどちらがscalazの最新バージョンであるかさえわかりませんが、私が見つけたほとんどのブログ投稿とドキュメントはバージョン7.0-M3を参照しているようです。
それで、私がScalazを利用するPlayアプリケーションを開発していることを考えると、scalaz 7を学ぶのに少し時間がかかったので、scalaz6に戻るのは大変なことのようです。
プレイ内でScalaz7を使用する正しい方法は何ですか?私が今行っているように、非公式のリポジトリに行くべきですか、それともプロジェクトをScala 2.9.2にアップグレードするべきですか?プレイです!すでに2.9.2をサポートしていますか?そうでない場合、どのようにアップグレードする必要がありますか?
scala - Scalaz7でのインポートの管理
プロジェクトでscalaz7を使用していますが、インポートで問題が発生することがあります。始める最も簡単な方法は
ただし、これにより競合が発生する場合があります。私が今までやってきたことは、次の少し苦痛なプロセスです。
- 私の実際のコードと同じインポートを必要とする最小限の例を考え出す
- その例を別のプロジェクトにコピーする
-Xprint:typer
暗黙の解決後にコードがどのように見えるかを調べるオプションを使用してコンパイルします- 元のプロジェクトに必要な暗黙をインポートします。
これは機能しますが、合理化したいと思います。scalaz7にはもっときめ細かいインポートがあるようですが、それらがどのように編成されているかを完全には理解していません。たとえば、私は1つができると思います
等々。
これらのサブインポートはどのように編成されていますか?
例として、検証を処理したいとします。たとえば、検証インプリシットを挿入して次のコンパイルを行うには、何が必要ですか?
ValidationNEL[A, B]
のインスタンスを作成するのはApplicative
どうですか?
scala - scalaz (scalaz7) でのグローバルなデフォルトの暗黙関数
Scalaz を使ってコードを書いていると、スコープに暗黙的なものがないという問題に遭遇することがよくあります。膨大なパッケージの scalaz のどこかにデフォルトの暗黙関数がいくつかあるはずだと思いますが、どこにあるかわからないか、まったくありません。
show
scalaz でanyを使いたいとしますAny
(私は scalaz 7 を使用しています):
Show[Any]
スコープに暗黙的なものがないため、機能していません。
なぜ Scalaz はそれを提供しないのですか? いくつかのグローバルを使用する良いアプローチはありますかShow[A]
? 私は次のようなことを意味します:
私は同じタッチだと思いますEqual
。
編集
回答に記載されているように追加しようとしましたimport scalaz.syntax.ShowSyntax
が、問題は解決しません。見る:
コンパイラはまだいくつかを必要としていimplicit scalaz.Show[Any]
ます。