
fp-tsとoption
fp-tsには値が存在するかどうかをデータ型として表現したOptionというものが存在する。 その紹介。 https://gcanti.github.io/fp-ts/modules/Option.ts.html コード例について コード例...

fp-tsには値が存在するかどうかをデータ型として表現したOptionというものが存在する。 その紹介。 https://gcanti.github.io/fp-ts/modules/Option.ts.html コード例について コード例...

関数型はデータ型というものを非常に重視する。 データ型によって値をモデリングし、どういった性質のデータなのかを表現する。 更に型システムと組み合わせることでデータ型はさらなる力を得る。 型システムによってデータ型を抽象化するときに利用する型...

単位元付きの二項演算を司る型クラスMonoidを紹介。 https://gcanti.github.io/fp-ts/modules/Monoid.ts.html 定義 定義を見ると分かる通り、すべてのMonoidはSemigroupである...

順番を司る型クラスOrdの紹介。 https://gcanti.github.io/fp-ts/modules/Ord.ts.html 定義 compareという比較用の関数が一つだけ生えている。 compareが返すOrderingは比較...

値の等値性を司る型クラスEqの紹介。 https://gcanti.github.io/fp-ts/modules/Eq.ts.html 定義 equalsという等値判断関数がいるだけ。 law Eqが満たすべきlawは3つある。 反射律:...

TypeScriptの関数型ライブラリのfp-tsには型クラスとしてSemigroupがいる。 その紹介。 https://gcanti.github.io/fp-ts/modules/Semigroup.ts.html Semigroup...

HaskellやScalaなどの関数型言語の特徴として型クラスというものがある。 これは関数型における強力な道具の一つであり、そして何もHaskellやScalaなどの特権機構ではない。 サポートの大小はあれど他の言語でも実現できる。 そし...

shapelessとかを使って型レベルプログラミングしてるとAuxパターンを使ってメソッドの型シグネチャで計算を表現することになる。 しかしこれが結構曲者でscalaのコンパイラの残念さもあり結構大変である。 その際に起こるコンパイルエラー...

関数型やってるとよく聞く代数的データ型(ADT)について。 Scalaやってるとよく使うがHaskellほどこの話題について掘った記事はあんまりないのでdigっていきたい。 そもそも代数的データ型とは 具体例 こういうやつ。 なぜ代数的デー...

この記事はA Brief History of ZIOを執筆者のJohn A De Goesさんの許可を取って翻訳したものです。 Thanks a lot to John A De Goes for the great article an...

Scalaはなんとなく書けるようになったけどライブラリコードとか読めないし、関数型はもっとわかない。 特にF[]みたいなやついっぱい出てくるけどなに?みたいな人に捧げる記事です。 このようなものは高カインド型などと呼ばれ、なかなか理解が難し...

アロー関数は前提知識。 カリー化を一言 関数を返す関数によってプログラムの共通化を図り、堅牢で安全なプログラムを作る。 カリー化の理論的な説明 複数変数を取る関数がある その関数を1変数を取り、関数を返す関数に分解する or wikiped...

詳しくは https://github.com/typelevel/cats-effect/releases/tag/v3.0.0 IOモナドの刷新 徹底的に再デザインしてパフォーマンス向上 ユーザが使いやすいようなインターフェースの追求...

ScalaにはAuxパターンというものがあるらしいのでまとめ。 解決したい課題 ある型に対しての型クラスインスタンスが複数欲しいときがあり、しかもその型クラス同士に依存関係があるとする。 上の例でいくとsomethingメソッドはTのTyp...

Scalaにはジェネリックプログラミングとか言うものを行うshapelessというライブラリがある。 その基本。 shapelessがやりたいこと そもそもジェネリックプログラミングとはなんぞやというと、名前の通りジェネリック=総称的なプロ...