「1から10までの整数を、ランダムに100個生成して、その標準偏差を求める」プログラムを Squeak Smalltalk で

昔のCマガジンに、プログラミング言語Jを用いると「1から10までの整数を、ランダムに100個生成して、その標準偏差を求める」プログラムは

0.5^~(+/%#)2^~(-(+/%#))1+?100$10

という1行だけで計算できることが誇らしげに書いてあった記事がありました。ループも変数も使っていないとのこと。

プログラミング言語J - 丸井綜研


ループは使わなくても大丈夫ですが、変数は使わないとダメでした。^^;

((1 to: 100) collect: [:idx | 10 atRandom]) in: [:Xs | (Xs - Xs average) squared average sqrt]


もっとも Smalltalk 処理系の中でも Squeak/Pharo に特徴的な、配列などをそのまま演算できる機能は APL の影響を受けてのことなので、できて当たり前ではありますね。