タグ

Scalaとfutureに関するringo6119のブックマーク (5)

  • Scalaにおける関数型並列並行プログラミング

    class: center, middle # Scalaにおける<br>関数型並列並行<br>プログラミング [![クリエイティブ・コモンズ・ライセンス](http://i.creativecommons.org/l/by/2.1/jp/88x31.png)](http://creativecommons.org/licenses/by/2.1/jp/) --- class: middle <img src="image/xuwei.gif" alt="アイコン" width="100" height="100" /> - twitter [@xuwei_k](https://twitter.com/xuwei_k) - github [@xuwei-k](https://github.com/xuwei-k) - blog <http://xuwei-k.hatenablog.com>

  • 継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita

    case class Cont[R, A](run: (A => R) => R) { def map[B](f: A => B): Cont[R, B] = Cont(k => run(a => k(f(a)))) def flatMap[B](f: A => Cont[R, B]): Cont[R, B] = Cont(k => run(a => f(a).run(k))) } ここで重要なのは Cont のコンストラクターに渡される run 関数です。 この run 関数を作り Cont のコンストラクターに渡すことで、継続モナドを作ることができます。 それで run 関数の型を見てみますと (A => R) => R とあります。 A => R という型の関数を受け取り、おそらく受け取った関数を実行し R という結果を返すという動作が期待できます。 ここで A を全体の中の途中の計

    継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita
  • ましめも

    speakerdeck.com 社内で発表したものを社外向けに編集し公開しました。 幅広い環境でSSL対応しないといけない方に一読いただきたい内容です。 Scala + Play Framework の環境で分散トレーシングを導入したくなったので色々調べたり実験しました。(結論から言うと、まだうまくいっていません…。) 分散トレーシングって?なんで使いたいの? 今回、僕が導入したいシステム(サーバサイドアプリケーション)はマイクロサービスアーキテクチャではないのですが、APIのレスポンスタイム向上のために分散トレーシングシステムを入れたくなりました。 もちろん当は「分散」トレーシングシステムである必要はなく、単純に グラフィカルに 処理のボトルネックを見たいだけです。 例えば、並行に処理している場合、ボトルネックを分析するのがログ等のテキストだと難しいことがあります。 以下のような処理が

    ましめも
  • Scala ExecutionContextって何 / Futureはスレッド立ち上げじゃないよ - ましめも

    こういう人は、あとあと処理が詰まったり理解できない挙動が起きたりして困るので注意。 よくわからないけどコンパイル時に怒られるので import scala.concurrent.ExecutionContext.Implicits.global を書いている Future.apply は 「スレッドを立ち上げて非同期に実行する」と理解している 特に何も考えず Future 内で Thread.sleep をしている ExecutionContextとは Future#mapやFuture.applyにimplicitパラメータとして要求される*1ExecutionContextって何なのか? 何か渡さないといけないからとりあえず import scala.concurrent.ExecutionContext.Implicits.global と書いている人もいるんじゃないだろうか。 Ex

    Scala ExecutionContextって何 / Futureはスレッド立ち上げじゃないよ - ましめも
  • Future と Promise

    Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn, Vojin Jovanovic 著 Eugene Yokota 訳 概要 Future は並列に実行される複数の演算を取り扱うのに便利な方法を提供する。それは効率的でノンブロッキングな方法だ。 大まかな考え方はシンプルなもので、Future はまだ存在しない計算結果に対するプレースホルダのようなものだ。 一般的に、Future の結果は並行に計算され後で集計することができる。 このように並行なタスクを合成することで、より速く、非同期で、ノンブロッキングな並列コードとなることが多い。 デフォルトでは、Future も Promise もノンブロッキングであり、典型的なブロッキング演算の代わりにコールバックを使う。 コールバックの使用を

  • 1