C 言語でクロージャ?
昼休みに職場の先輩に Ruby/Rails 勉強会で聞いた関数型言語の話をちょこっと報告。
先輩は、ここ 20 〜 30 年は静的型付言語ばかり使っていて、クロージャの話をしたところ「コンパイラはどんなコード吐くの?」と興味津々。
いや、私に聞かれても (^_^;;
それから数時間後、こんなコードが送られてきました。
# include <stdio.h> static void shunin(double kyuryo(double), double bonus(double)) { static const double ratio = 2; printf("主任がすばやく立ちました。\n"); printf("給料は %g 円です。\n", kyuryo(ratio)); printf("ボーナスは %g 円です。\n", bonus(ratio)); } int main() { double kihonkyu; static double kyuryo(double ratio) { return kihonkyu * ratio; } static double bonus(double ratio) { return kyuryo(ratio) * 4; } kihonkyu = 100; shunin(kyuryo, bonus); return 0; }
これってクロージャ?