From 5359994ebec123310a3796eb4478f1cc521e768c Mon Sep 17 00:00:00 2001 From: Jun Furuse Date: Mon, 11 Dec 2017 09:27:28 +0000 Subject: [PATCH] update --- ppx_2018.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ppx_2018.md b/ppx_2018.md index c09be71..e502dee 100644 --- a/ppx_2018.md +++ b/ppx_2018.md @@ -284,3 +284,23 @@ a ``` ## AST mapperでASTを変更する + +上のOCamlで書く初めてのPPXの例では`Ast_mapper.default_mapper`という、 +`Ast_mapper.mapper`型のデータを使いました。この`mapper`はOCamlのASTをASTに写す「関数」です。 +「関数」とカギカッコなのは、実際は関数群になっているからです。 +`parsing/ast_mapper.mli`を参照してください: + +```ocaml +(** {1 A generic Parsetree mapper} *) + +type mapper = { + attribute: mapper -> attribute -> attribute; + attributes: mapper -> attribute list -> attribute list; + case: mapper -> case -> case; + cases: mapper -> case list -> case list; + class_declaration: mapper -> class_declaration -> class_declaration; + class_description: mapper -> class_description -> class_description; + ... +``` + +山のように関数メンバのあるレコードです。