Browse thread
Upgrading sexplib-2.7.0 to camlp4 3.10
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2007-05-01 (17:04) |
From: | Joel Reymont <joelr1@g...> |
Subject: | camlp4 3.10: Matching variant types |
On May 1, 2007, at 5:27 PM, Nicolas Pouillard wrote: > << `id >> was encoded as RfTag(_loc, true, []) So then "RfTag (cnstr, _, [])", a constructor without arguments, would become <:ctyp< $`id$ >> whereas "RfTag (cnstr, _, tps)" <:ctyp< $id:tys$ >>? Wasn't <:ctyp< $id$ >> used for something else already? camlp4of -str '<:ctyp< int >>' Ast.TyId (_loc, Ast.IdLid (_loc, "int")) I thought that id is used for regular types, according to the above. I tried to see what variant type defs expand to (below). camlp4of -str '<:ctyp< [`Foo] >>' Ast.TyVrnEq (_loc, Ast.TyVrn (_loc, "Foo")) camlp4of -str '<:ctyp< [Foo] >>' Ast.TyVrnEq (_loc, Ast.TyId (_loc, Ast.IdUid (_loc, "Foo"))) camlp4of -str '<:ctyp< [`Foo|`Bar] >>' Ast.TyVrnEq (_loc, Ast.TyOr (_loc, Ast.TyVrn (_loc, "Foo"), Ast.TyVrn (_loc, "Bar"))) camlp4of -str '<:ctyp< [Foo|Bar] >>' Ast.TyVrnEq (_loc, Ast.TyOr (_loc, Ast.TyId (_loc, Ast.IdUid (_loc, "Foo")), Ast.TyId (_loc, Ast.IdUid (_loc, "Bar")))) Is there a "ctyp", "id", "lid", etc. shortcut that should be used for TyVrnEq? Is there a path through the camlp4 sources that would enable me to figure this out? Ast.TyId (_loc, Ast.IdUid (_loc, "Foo") This is matched by $id:uid", correct? Is there a "shortcut" for TyOr and TyVrn? I'm afraid I'm still lost here, thus my asking for more information. Thanks, Joel -- http://wagerlabs.com/