次元の話

単位の話』を書いていて思い出したことに,指数関数 exp(x) の x が取り得る次元の話がある.確かゼミでの発表中でのこと,ホワイトボードに式を書いていく途中にこんな感じで突っ込まれた.
「その式の (x) の部分,おかしいよね.無次元になっていない」
しばし考えたのち,理由を理解.
この一件を今でも憶えているのは,次元を意識しながら式を眺めるという発想が当時の自分に無かったからで,それがやけに新鮮だったからだろう.まさに狙い通りな,大変ありがたい教育的突っ込みであった.
とまあそんな過去があって,単位系をサポートした静的型付け言語と聞くと,以下のようなコードがコンパイルエラーになるかどうか,まずは確認したくなる次第である.

auto a = 10.0 km;
auto b = 9.0 km;
auto y = exp(a - b);  // a - b が無次元ではない!