無駄と文化

実用的ブログ

プログラミング

指定したキーだけを省略可能にするユーティリティタイプを書く

TypeScript は便利だ。型検査で値が保証されるのはとても頼もしい。 とはいえ場合によっては型検査を通すために不必要にタイプ量が増えてしまうことがある。 例えば下記のような型が 外部ライブラリによって生成される としよう。 type User = { __typename:…

型無しラムダ計算学習用ステップ評価器 skiMogul を作っている話

みなさま ラムダ計算 をご存知でしょうか。 ラムダ計算はある種の関数型プログラミング言語の体系で、変数と関数, そして関数適用というミニマルな構成要素だけでチューリング完全な表現力を持っています。 この記事では、ラムダ計算の中でも特に単純な 型無…

Rust はコストのかかるコードを書くのが苦痛になるようにデザインされている(?)

Rust は「コストのかかるコードは書くのが苦痛であるべき」という思想のもとデザインされている気がする。 というのも Rust を書いていると「意図的にショートカットが用意されていない」と思える場面があるからだ。 いくつか例を挙げてみようと思う。 文字…

Perl と Rust

どうも id:todays_mitsui です。この記事は はてなエンジニア Advent Calendar 2023 の23日目の記事です。 昨日は id:cateiru さん、明日は id:motemen さんです。 『達人プログラマー』という有名な書籍があって、そのなかで毎年少なくとも一つの言語を学習…

JavaScript で関数とクラスを見分ける

JavaScript においては typeof や constructor を参照するだけでは関数と class を見分けることができません。 // ただの関数 function myFunction() {} // class class MyClass {} // typeof では見分けられない typeof myFunction; // => 'function' typeo…

substr のマジカルな挙動を再現したい

Perl に substr という関数があります。文字列を部分的に切り出したり、部分的に置換できる関数です。 典型的な使い方はこんな感じ、 my $s = 'The black cat climbed the green tree'; # 4文字読み飛ばしてから5文字取り出す my $color = substr $s, 4, 5; …