タグ

2018年11月15日のブックマーク (4件)

  • 【Scala】flatMap は怖くない! | DevelopersIO

    ここで注意が必要なのは「型引数をとる全てのクラス(全ての総称型) ≠ 文脈付きの値」ということです。型引数をとり、文脈付きの値とはいえないクラスも存在します。 たとえば SeqFactory[A] は、 Seq のサブクラス A を生成するファクトリであり、 文脈付きの値ではありません。もっと身近な例を上げると、わたし達が普段よく目にしている(であろう) Provider[A] や Publisher[A] というインターフェイスも、それぞれ「Aを提供するもの」「Aを発行するもの」という意味であり、Aという値を修飾しているわけではないので文脈付きの値とは呼びません。 文脈付きの値を返す関数 親友検索を考える さて、文脈付きの値がどのようなものかわかってきたところで、実際に文脈付きの値を生成する関数を作ってみましょう。 …などと大げさに言ってみましたが、そんなもの、今までだってたくさん作って

    【Scala】flatMap は怖くない! | DevelopersIO
  • for式のforeach/flatMap(map)展開について - Qiita

    概要 for式が実際どのように展開されるのかわかった気になっていたけど、結局よくわかってなくて、ちゃんと調べたら理解できたので、自戒の念も込めて書いた記事です。 1 言語仕様 6.19 For Comprehensions and For Loopsに書かれていることは簡単で、 yieldのないfor式は、foreach展開 yieldがあるfor式は、flatMap/map展開 になります。これだけ。 つまり大雑把に言えば、 単純に値を処理したいだけの時は、yieldのないfor式 (foreach展開) 値をmap(型変換など)して返したい時は、yieldをつけたfor式 (flatMap/map展開) を使用すればよいです。 ちなみに、for式中のifはwithFilterに変換されます。

    for式のforeach/flatMap(map)展開について - Qiita
  • Play2のPromiseと非同期処理について調査した - サナギわさわさ.json

    PlayFrameWorkはイベント駆動型を基としているため、全ての処理は非同期で実行される事が前提となっています。 これによって単一スレッドで複数のリクエストを捌く事ができます。 非同期のHTTP呼び出しを実現するPlay WS APIを使って外部のWebサイトにアクセスするコードを例にして、非同期処理でクライアントからのリクエストがどう扱われるか見てみます。 非同期処理でのリクエスト挙動 非同期で外部Webサイトにアクセスするコントローラ public class TestController extends Controller { public static F.Promise<Result> nonBlockingUrlAccess() { final String uniqueId = UUID.randomUUID().toString(); Logger.debug("r

    Play2のPromiseと非同期処理について調査した - サナギわさわさ.json
  • ScalaでFutureの入れ子を良い感じに処理したい