ひらめの日常

日常のメモをつらつらと

Scala

Java/Scala: ExecutorServiceとExecutionContextについてまとめる

はじめに ExecutorService ThreadPoolExecutor ForkJoinPool ThreadPoolExecutor vs ForkJoinPool ExecutionContext これから知りたいこと はじめに Scalaの ExecutionContext について調べていたのですが、JVMのスレッドプール周りの知識が必要だと思ったの…

【Scala】Monocleを使ってみたメモ

何の記事か こちらの『Scala Design Patterns』の11章前半です。 Scala Design Patterns: Design modular, clean, and scalable applications by applying proven design patterns in Scala, 2nd Edition (English Edition)作者:Nikolov, IvanPackt Publishi…

【Scala】Optionモナドをcats.Monadを使って書いてみる

何の記事か Scala Design Patterns で例として挙げられていた Optionモナドを、 cats.Monad を用いて書き換えてみます。以前 Scala Design Patterns のモナドに関する章を噛み砕いで追いました。 hiramekun.hatenablog.com では cats の Monad を使うとどの…

【Scala】Scala Design Patterns - Chapter10 - Monads

はじめに Monad の定義 本の中の定義 Functorsとは Monadとは flatMap, unit, map モナド則 何が嬉しいのか 具体例 Optionモナド IOモナド はじめに 『Scala Design Patterns』 という本を、会社の輪読会で呼んでいるのですが、モナド周りの説明が難しかった…

【Scala】リスコフの置換原則と共変反変

リスコフの置換原則と、それに関係の深いScalaにおける共変反変について理解が浅かったのでまとめてみました。まとめてみたものの、未だに分かりづらいので、またアップデートします。

Scalaで競技プログラミング: 標準入力周りで調べたこと

複数変数の初期化 複数行の読み込み Array.fill 複数変数の初期化 例えば、1 2 3のように空白区切りで3つの標準入力を受け取るために、次のようなコードをよく書きます。 val sc = new Scanner(System.in) val v, e, r = sc.nextInt() これは左辺の変数の個…

Scalaで競技プログラミング: ダイクストラ法

C++で書いたライブラリをScalaで書き直しています。ダイクストラ法全体として以下のようなコードになりました。 case class Edge(to: Int, w: Long) case class Graph(n: Int) { val g: Array[Array[Edge]] = Array.fill(n)(Array.empty) def push(from: Int…

Scala: Ordered[T] と Ordering[T] の違い

結論 Ordered[T] は自身に継承し、比較可能にする Ordering[T] は自身を変えることなく、外側から変換を提供する gist.github.com Ordered[T] 例えば、単純に比較するだけのクラスを作る。このクラスは Ordered[T] を継承していて、compareメソッドを実装す…

『Akka実践バイブル』を読んだ(後半)

Akka実践バイブルを読んでいるので、自分の印象に残ったところをメモ程度にまとめます。こちらは後編です。

『Akka実践バイブル』を読んだ(前半)

Akka実践バイブルを読んでいるので、自分の印象に残ったところをメモ程度にまとめます。

Scalaで競技プログラミング: 累積和

scanLeftはfoldLeftの途中経過の値を保持するような関数。 これを使えば、累積和の計算が簡単にできる。 初期値が一番最初に挿入されるので、元の配列より大きさが+1されていることに注意する。 val a = Array(1, 2, 3) val d = a.scanLeft(0L)(_ + _) print…

Scalaで競技プログラミング: ABC114-C 755

始めに 今までC++で競技プログラミングをしてきたのですが、業務でScalaを書いていることもあり、ScalaでAtCoderを解いてみようと思います。大半が解いたことある問題かつ、目的はScalaに慣れることなので、解説は省いています。 勉強途中であることもあり、…

Scalaで競技プログラミング: ATC001-A 深さ優先探索

始めに 今までC++で競技プログラミングをしてきたのですが、業務でScalaを書いていることもあり、ScalaでAtCoderを解いてみようと思います。大半が解いたことある問題かつ、目的はScalaに慣れることなので、解説は省いています。 勉強途中であることもあり、…

Scalaで競技プログラミング: ABC167-C Skill Up

始めに 今までC++で競技プログラミングをしてきたのですが、業務でScalaを書いていることもあり、ScalaでAtCoderを解いてみようと思います。大半が解いたことある問題かつ、目的はScalaに慣れることなので、解説は省いています。 勉強途中であることもあり、…

Scalaで競技プログラミング: ABC151-C Welcome to AtCoder

始めに 今までC++で競技プログラミングをしてきたのですが、業務でScalaを書いていることもあり、ScalaでAtCoderを解いてみようと思います。大半が解いたことある問題かつ、目的はScalaに慣れることなので、解説は省いています。 勉強途中であることもあり、…