タグ

ブックマーク / susisu.hatenablog.com (2)

  • TypeScript 型レベル関数型プログラミング in 2023 - Object.create(null)

    ちょっと前に話題になった hotscript の技法の紹介やら, ラムダ計算を TypeScript の型にコンパイルする話やらなんやら. 通常の型レベル関数 TypeScript の型エイリアスはパラメータを取れるので, これは型レベルの関数であるとみなせます. type IsNumber<X> = X extends number ? true : false; type A = IsNumber<42>; // = true 一方でこのようにして定義された関数は第一級ではない, つまり関数そのものを他の関数の引数として渡したりすることができません. type FilterUnion<F, X> = X extends unknown ? (F<X> extends true ? X : never) : never; // ~~~~ // ^ Error: Type 'F' is n

    TypeScript 型レベル関数型プログラミング in 2023 - Object.create(null)
  • セルフコードレビュー - Object.create(null)

    自分の書いたコードのレビューを依頼するとき, 必ず先にセルフレビューするようにしていて, まあまあ上手くいっていると思っている. 元々のモチベーションとしてはコードの品質の向上と (物の) レビュワーとのコミュニケーションのつもりだったけど, 来レビュー時に行われるはずだったやりとりが削減されることで開発が高速化される効果もありそう. セルフレビューにかける時間は, 典型的な規模 (差分 500 行以下くらい) の場合で修正込みでだいたい 15 分 〜 30 分程度で, そこに至るまでの実装にかけている時間が 1 〜 2 時間くらいと考えるとまあまあ時間は割いている. ただこれは他の人のレビューを待って, 一往復に数時間 〜 数日かけてやりとりして同じ変更を加えるよりはずっとマシ. 何かの参考になるかもしれないので私のやり方を書いておきます: 他の人のコードをレビューするときと全く同じ

    セルフコードレビュー - Object.create(null)
  • 1