Home About
データ変換を Writer Monad 的に処理する その4

このポストはすでに古い。 こちら 改訂版 を参照ください。

前回のエントリーのコードを引き継いで、 もし処理対象のデータに重複があったらどのように対処するか考えてみます。

» Read More
データ変換を Writer Monad 的に処理する その3

このポストはすでに古い。 こちら 改訂版 を参照ください。

前回のエントリーの コードを見直しある意味もう少しシンプルに実装してみます。

» Read More
データ変換を Writer Monad 的に処理する その2

このポストはすでに古い。 こちら 改訂版 を参照ください。

今回は 前回のエントリーで実装した Writer を引き続き使って、 より実践的な例でこれがどのように便利かを説明します。

» Read More
データ変換を Writer Monad 的に処理する その1

このポストはすでに古い。 こちら 改訂版 を参照ください。

たとえば価格改定などで、昨年と今年の価格表がエクセルデータとして支給される。 そして、それを商品ごとにマージして、最新の価格表を提出せよ、 といったタスクがあったとする。

このとき、商品ごとにキーとしての id が設定されているわけでもなく 商品名が一致したら同じ商品として扱うという雑な仕様。 そして、入力ミスにより微妙に商品名が昨年と今年で異なるものが含まれてもいるのだが、 同じ商品として扱ってほしいと言われたりする。

さらに価格が値下がりしている商品があるのだが、それらは価格入力をミスしている恐れがあるので、 そういう場合は警告しなければならない。などなど。 このような状況で、昨年と今年のデータをマージして最新の商品価格情報を作り出す必要がある場合に、 Writer Monad があれば心強い ですよ、という話です。

» Read More
Kotlin で Maybe その2 普通に Optional を使う

随分以前に Kotlin Sealed クラスを使った Maybe の実装というエントリーを書いたのだが、 Maybe を使う目的が 値があったりなかったりする値 を上手に扱いたい、ということであれば、 わざわざ自前で定義するのではなく、 (Java とか Kotlin の世界では)java.util.Optional を使えばいいじゃないか。

» Read More
特定のディレクトリ以下全部のファイルとディレクトリをリストにする

要するに Tree 構造のものをフラットにしたい。

たとえば、特定のディレクトリ以下から PDF ファイルのみを抜き出してなにか処理するとか、そんなタスクに使うコード。 もちろん、シェルスクリプトで書けば以下のように簡単に記述することができる。

» Read More
H2 Database Engine を kotlin から使う

H2 Database Engineを kotlin から使う方法を調べた備忘録です。

» Read More
KotlinDL で MNIST データを取得してローカルに保存

KotlinDL経由で MNISTデータを取得する方法を調べたその備忘録です。

以前に Python で書いた download.pyと同じ機能をKotlinDLで実装します。

» Read More
Quick, Draw! のデータをパースして SVG に変換

Quick, Draw! というプロジェクトがあります。 ここで描かれた落書きデータの入手方法がこちらで説明されているので、kotlin でパースして SVG に変換してみました。

ゆくゆく ss one のプロジェクトで、 これを何かに活用できないかとは思っている。

» Read More
Kotlin, fold を使って階層のあるリストをパースする

たとえば、次のようなマークアップされたセカンドレベルまで階層のあるリストを表現したテキストがあったとして、 それを kotlin の fold を使ってパースして構造化する例を考える。

» Read More
特定ルールでテキストのヘッダとボディとを分離する

kotlin でステートマシンを使って行ごとの状態を把握したい。

まあ、そんな大げさな話ではない。 テキストファイルの先頭から行ごとに調べて、見出し行が出現する直前までをヘッダとし、それ以後はボディとして扱いたい。そのためのコードをどう書くかの話。

» Read More
改善版) kotlin でパーサーコンビネータを実装する

改善版2024) kotlin でパーサーコンビネータを実装する もあわせてご覧ください。

テキストをパーサーコンビネータを使ってパースすることを考えてみる 」 というのを先日考えたのですが、今回はその改善版です。

zeroOrMore パーサー の再帰部分が気に入らないので見直しました。

» Read More