少年易酔學難成

IT/技術的な話題について書きます

Scala

Scala開発日記 2019/05/14

5月から1年ぶりにScalaを使った開発が始まりました。 1年ぶりにScalaを触った感想は、「思った以上に忘れてる、ヤバイ」でした。 せっかくまたScala触れたのだから、今度はわすれないよう、日々のScala開発で感じたことやハマったことをメモしていこうと思い…

Scalaでもパイプラインできるもん!

Elixirのパイプライン演算子が羨ましくなったので作ってみました。 と言っても、こいつ↓でオブジェクトにパイプライン演算子を生やすだけです。 implicit class Pipe[A](value: A) { def |>[B](f: A => B): B = f(value) } こんな感じでかけます。 List(List…

二分木の畳み込みを末尾再帰化したい人生だった

※ この記事はアルゴリズムに詳しくない人が自分の思考の記録のために書いた記事です。 なので書いた内容が合っているかは確証が持てません。 「大間違いだよ、馬鹿野郎!」というツッコミは大歓迎します。 突然どうした 現在、自分はプロジェクトでScalaを使…

{1,2,3,5,7}みたいなリストを"1-3,5,7"に変換する

電車で移動中にタイムラインに流れて来てちょっと面白そうだということで実装してみた。 {1,2,3,5,7}みたいな配列(またはリスト)を“1-3,5,7”に変換するってのを書かなきゃいけない。逆の変換はそう難しくないのだけど。どう書こうかな。— いくた♥️なお/2日…

traverseとsequenceをめぐる冒険

事の発端 Scalaを書いているとビジネスロジックの結果の合成などでEitherやValidationのsequenceメソッドが欲しい!ということがあります。 ちょうど今のプロジェクトでもそういう声が結構あって、「これ、進研ゼミでやったぞFP in Scalaで書いたぞ!」と思…

play-jsonについて学ぶ(2)

Readsをどのように書くか 前回のエントリでplay-jsonのReads/Writesの意味とPlay Frameworkでの使い方を確認したので、実際にReads/Writesをどのように書くかを考えてみる。 今回はReads。 愚直にReadsを書く JsValue => Aの処理を最も愚直に書けば以下のよ…

play-jsonについて学ぶ(1)

目的 現在のプロジェクトではJSONライブラリとしてplay-jsonを(play scalaと共に)使用している。 play-jsonはドキュメントは豊富なのでググれば大抵の問題は解決できて便利なのだけれども、ググってもやり方が見つからない場合は解決に時間がかかってしまっ…

S-99: Ninety-Nine Scala ProblemsのP07を末尾再帰にするだけの正月だった

昨年大晦日から、少しずつS-99: Ninety-Nine Scala Problemsに取り組んでいる。 取り組み方は色々あると思うが、個人的に設定したルールは以下の二つ。 Listのコンストラクタ(Nil or ::)以外は自作する なるべく末尾再帰にこだわる(なぜ末尾再帰にこだわるか…