Home About Contact
配列の要素をひっくり返す reverse を foldl, foldr で実装

JavaScript で...というか TypeScript で 配列の要素をひっくり返す には list.reverse() すればよいだけなのだが、この方法では元の配列もひっくり返る(破壊される)らしい。 list.toReversed() を使えば問題ないらしい。

» Read More
type の種類ごとにガードしたい

Apple 製品と MS 製品の混在したリストがあったとして、そこから Apple 製品だけ、または MS 製品だけのリストをつくるという例を考える。

» Read More
リストを n 個ごとに分割する ファイナルアンサー

リストを n 個ごとに分割する その4 TypeScript 編の続きです。 このポストの元をたどると リストを n 個ごとに分割する kotlin 編にいきつく。

» Read More
リストを n 個ごとに分割する その4 TypeScript 編

React で名前の配列を4個ごとに区切ったサブリストをつくり、 それをテーブルのそれぞれ行として扱う必要が生じた。

リストを n 個ごとに分割する その3で 書いたコードを TypeScript に移植したので、その覚え書きです。

» Read More
リストを n 個ごとに分割する その3

その1その2に続く その3 です。

その1 で独自に makeSubList という再帰関数を定義して解決していたが、 fold を使いさえすれば済む話ではないかと思っていたので、今回試した。

結論としては fold で書き直すことができた。

» Read More
リストを n個ごとに分割する その2

以前にもこのリストのサブリストをつくる件は書いた。 いまつくっているアプリでちょうどリスト分割する機会があったので書き残す。

» Read More
データ変換を 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