/var/log/jsoizo

メモ帳 技術とか趣味とか

2023-04-01から1ヶ月間の記事一覧

複数のバリデーション結果を蓄積したいときのEither<Nel<E>, A>とzipOrAccumurate

よくあるケースとして、入力値に対してバリデーションを行いすべて評価してから結果を返したい場合がある。 たとえばこのようなPerson型があったときに、 class Person private constructor(val name: Name, val age: Age) ① name は空文字を許さない ② age …

Arrow.ktのnullable DSLでjOOQがnullable大量に生み出すのを何とかする

過去にjOOQのRecord型から値を取り出すときに、一旦nullableをArrow.ktのOption型に変換してから合成すると良いよ的な書き方をしたんだけど、 jsoizo.hatenablog.com 同じくArrow.ktのnullable DSLでもっとスッキリ書けるとわかったので改めて。 以下のよう…

Context Receiverを利用した簡易的なDI

Kotlin Confがはじまった!!! キーノートではKotlin 2.0に追加される言語仕様が発表された。 blog.jetbrains.com 個人的には好きなKEEP段階の機能であるContext Receiverがついに正式なリリースを迎えることになりそうで嬉しい一方で、Kotlin 2.0まで待たない…

Itelable<T>のfoldとrunningFoldの違い

よくつかっているIterableの自作extensionを紹介します - Speaker Deck で以下のようなコードを紹介した。 fun <A, F, S> Iterable<T>.partitionMap( predicate: (A) -> Boolean, transformFirst: (A) -> F, transformSecond: (A) -> S ): Pair<List<F>, List<S>> = this.fold(Pair(</s></list<f></t></a,>…