問題タブ [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 - Scala での実際の関数型プログラミング
すっごく...
半群、モノイド、モナド、ファンクター、レンズ、カタモルフィズム、アナモルフィズム、アロー... これらはどれも良さそうで、1 回か 2 回 (または 10 回) 練習すれば、それらの本質をつかむことができます。そしてScalaz
、あなたはそれらを無料で手に入れます...
ただし、実際のプログラミングに関しては、これらの概念の使用法を見つけるのに苦労しています。はい、もちろん、私はいつもウェブ上で Monads for IO や Scala の Lenses を使っている人を見つけますが...それでも...
私が見つけようとしているのは、パターンの「規範的な」線に沿ったものです。「ここで、あなたはこれを解決しようとしています。それを解決する良い方法の 1 つは、このようにレンズを使用することです!」
提案?
更新: 1 冊か 2 冊の本で、これらの行に沿った何かがあれば、すばらしいでしょう (Paul に感謝します): Java のコア ライブラリの GoF デザイン パターンの例
scala - scalaz州のモナドを理解しようとしています
リフトプロジェクトでscalazを使い始めようとしています。その目的のために、私はスタイルに合うようにいくつかのコードを書き直しています。ユーザーにログインするためのコードを考えてみましょう。
したがって、これはどういうわけか状態モナドを使用して書き直す必要があります。しかし、私はどうやって得られないのですか。これを試してみてください:
UPD:回答によると、例を更新しました。
gets
、、などの使用方法を示す、scalazの状態モナドに関する優れたチュートリアル/説明はありput
ますか?
scala - 検証を返す関数で Kleisli コンポジションを使用するにはどうすればよいですか?
検証を返す 2 つの関数を作成するにはどうすればよいですか? 以下は、うまくいかなかった私の試みです:
これは Haskell で機能するので、Scalaz でもこれを行う方法があるはずです。
scala - Option、EitherなどのフォールドとTraversableのフォールドの関係は何ですか?
Scalazは、、、などのさまざまなADTにちなんで名付けられたメソッドを提供します。fold
このBoolean
メソッドは、基本的に、その特定のADTのすべての可能なケースに対応する関数を取ります。つまり、以下に示すパターンマッチです。Option[_]
Validation[_, _]
Either[_, _]
と同等です:
いくつかの例:
同時に、Traversable[_]
タイプに同じ名前の操作があり、コレクションをトラバースしてその要素に対して特定の操作を実行し、結果値を累積します。例えば、
これらの2つの操作が同じ名前(fold
/ catamorphism)で識別されるのはなぜですか?私は2つの間に類似点/関係を見ることはできません。私は何が欠けていますか?
scala - scalazのpromiseを使用するときに関数を呼び出す
Scalaとscalazの初心者として、promiseを使用すると、問題が発生しました。このような私のコード。
この出力は次のとおりですが、奇妙に見えます。sleeperメソッドが呼び出されておらず、スレッドがブロックされているようです。-
しかし、インラインスリープを呼び出すスリーパーを置き換えると、問題ないように見えます-
ここに出力-
理由がわかりませんが、教祖にアドバイスしてもらえますか?
scala - Map の 1 つのエントリをマップする
次のようなことを達成したい:
そして、このmapKey
関数は 2 番目の引数 ( Int => Int
) を に格納されている値にのみ適用しk
ます。標準ライブラリ内に何かありますか? そうでなければ、Scalaz には何かがあるに違いない。
もちろん、この関数を自分で書くこともできますし ( m.updated(k,f(m(k))
)、それを行うのは簡単です。しかし、私はこの問題に何度か遭遇したので、おそらくすでに完了していますか?
Scalaz の場合、次のコードに沿って何かを想像します。
scala - Option[IO[Option[A]] から IO[Option[A]] を取得してから、シーケンスとマッピング結合を使用するより慣用的な方法はありますか?
私はかなりの数の場所に出くわしています
何度も繰り返されるのを見る.sequence.map(_.join)
と、私は気になり始めています。同じことを達成するためのより慣用的な方法はありますか?
scala - Optionをscalaz検証に変換する組み込みの方法はありますか?
私は探していましたが、暗黙のコンバーターが見つかりません。言うまでもなく、それを書くのは簡単ですが、どういうわけかscalazライブラリで1つを逃したのではないかと思います!
scala - scala で 2 つのタプルを新しい大きなタプルに結合するクリーンな方法は?
次のタプルがあるとしましょう。
それらを (必要に応じて 2 つのステップで) Tuple7 に結合するフレンドリーな方法はありますか? 私は、任意のサイズのタプルを結合するための一般的な答えを本当に探しています。タプルの最大サイズが制限されているため、制限があることを認識しています。コレクションではなく、タプルの結果を特に探しています。
scala - Scala PartialFunction はモノイドにできますか?
PartialFunctionはMonoidにできると思いました。私の思考プロセスは正しいですか?例えば、
ただし、現在のバージョンの Scalaz(6.0.4) には含まれていません。含まれていない理由はありますか?