OCamlのPPX_Deriving

  • 2
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

この記事はAdvent Calender 2014 MLの19日目の記事です。

今日はPPX_DerivingっていうPPXを使った機能を使うと便利ですという話です。

URLはこちら: https://github.com/whitequark/ppx_deriving

opamでインストールできて

opam install ppx_deriving

For example, if you are using ocamlbuild, add the following to _tags to use the default deriving plugins:

<src/*>: package(ppx_deriving.std)

If you are using another buildsystem, just make sure it passes -package ppx_deriving_whatever to ocamlfind.

だそうです。試してないので試してみてください。<なんという手抜き記事

たとえば、以下のように書くと、HaskellやRustでおなじみのderiving showが出来ます!

type point2d = float * float
[@@deriving show]

素晴らしいppx!

追記:

test.ml
type point2d = float * float
[@@deriving show]

let _ =
    Printf.printf "%s\n" (show_point2d (1.1,2.2));

このようなファイルをコンパイルしたい場合

$ ocamlfind ocamlopt -package ppx_deriving.show test.ml -o test
$ ./test
(1.1, 2.2)

とします。ppx_deriving.showと.showを付けるのがポイントです。

OMakefileを使うなら

.PHONY: all install clean

USE_OCAMLFIND = true
OCAMLPACKS[] =
    ppx_deriving.show
FILES[] =
  test
PROGRAM = test
.DEFAULT: $(OCamlProgram $(PROGRAM), $(FILES))

とします。

この投稿は ML Advent Calendar 201419日目の記事です。