タグ

ブックマーク / no-maddojp.hatenablog.com (4)

  • ML_Day#2を開催しました - type t (* void *)

    ML Day#2を開催しました。 ML勉強会という名前にしていたときから数えて通算4回目です。 今回もドワンゴさんのセミナー室をお借りしました。 この規模のセミナー室が便利に利用できるのは当に助かります。 発表の紹介 発表枠6 + LT枠5のあわせて11もの発表がありました。発表者の皆様に感謝です。 他のコミュニティだと割と発表者の確保に苦労しておられるようですがML勉強会からあまり困ったことがありません。 以下の紹介は私の理解ですので何か訂正があったらツイとかで指摘ください。。。 ラベルなしオプション引数のための型システムと型推論 unlabeled-opt-args.pdf - Google ドライブ 最初はSATYSFIでお馴染みの@bd_gfngfnさんの発表でした。 この発表はSATYSFI向けに、オプション引数のための型システムと型推論を考えてみたという話でした。 Latex

    ML_Day#2を開催しました - type t (* void *)
  • OCaml: hello world!が実行されるまで - type t (* void *)

    C# のHelloworldの基礎を説明できる人、弊社に一発で入社できますよ。ってかんじだ。— きょん@うさみみモード (@kyon_mm) 2017年5月16日 @func_hs 別に言語はとわないつもりですけど、 C# だとうれしい。— きょん@うさみみモード (@kyon_mm) 2017年5月16日 前一度調べたので記事をまとめておく。 OCamlプログラムの初期化は複雑だなぁ思った次第です。 コンパイルコマンド ocamlopt -verboseで実際に動くコマンドが見えるのでまずコレをチェックしておく。 結構色々なことが分かる $ ocamlopt -verbose -o caml_hello hello.ml + as -o 'hello.o' '/tmp/camlasmfdcbdf.s' + as -o '/tmp/camlstartupfccd4a.o' '/tmp/ca

    OCaml: hello world!が実行されるまで - type t (* void *)
  • C: マクロ定義の中にプラグマを書きたい - type t (* void *)

    残の業。 Cを書いているとき、gccで以下のような、関数を定義するマクロの中に#pragmaを書きたいときどうするか。 このままではプリプロセッサが#pragmaを文字列化演算子だと思ってコンパイルエラーになってしまう。 なお下のプログラムには大して意味はない。。。。。。 #define loop(x) \ #pragma GCC ivdep \ for (int i = 0; i < N; i++) { \ x[i] = -100; \ } \ ここではc99から導入された_Pragma("directive")を使えばいい。 gcc.gnu.org #define loop(x) \ _Pragma("GCC ivdep") \ for (int i = 0; i < N; i++) { \ x[i] = -100; \ } \ gccに-Eをつけてプリプロセッサの出力を見るとしっかり

    C: マクロ定義の中にプラグマを書きたい - type t (* void *)
    emonkak
    emonkak 2017/05/23
  • コンパイラ: min-camlをJVMバックエンドに移植した話 - type t (* void *)

    この記事は言語実装アドベントカレンダー21日目、MLアドベントカレンダー21目の記事です min-camlのJVMバックエンドを作ったという話を前に書いたのですが、 それの詳細を書きたいと思います。 前の話はこの辺にかかれています。 JVMバックエンドに移植するのは大して難しくないというのは上の記事で書きました。 スタックマシンへのコンパイルの方針はほぼ説明尽くしたと思っていますが、 そのへんで説明していないものについて説明します。 基方針 min-camlのシンタックスというのは以下で表される非常にシンプルなものなのです。 移植する際はこれを直接扱わずに済みます。直接対象にするのはClosure.progです。 min-camlでは以下のように形式が変換されます。 min-camlではまずK正規化され(ここを見てください)、次にクロージャ変換されます。 次の中間言語Asm.progから

    コンパイラ: min-camlをJVMバックエンドに移植した話 - type t (* void *)
  • 1