gcc拡張関数型言語C

Cって関数型言語だったんだ。型推論もサポートとしたモダン言語だったんだね。

#include <stdio.h>
int main(int argc, char** argv)
{
  ({typeof( ({typeof(0) x = 0;
      printf("argv[$d] = %s\n", argv[x]);
      argv[x];}) ) s;
    ({typeof(0) x = 0; if(x < argc) while(true) {
        printf("argv[%d] = %s\n", x, argv[x]);
        typeof(s)& __s = argv[x];
        ++x;
        if(!(x < argc)) {
          s = __s;
          break;
        }
      }});
    printf("last argument = %s\n", s);
  });

  /*
  var s = for(var x=0; x < argc; ++x) {
    printf("argv[$d] = %s\n", argv[x]);
    argv[x];
  }
  printf("last argument = %s\n", s);
  */
}

コメント部分みたいに書けたらイケてるんじゃないか?

# typeofはC++0xで標準化されていた。thanks nyaxt