@@ -4086,15 +4086,15 @@ <h2 id="_high_level_compiler_workflow"><a class="anchor" href="#_high_level_comp
4086
4086
Typedtree
4087
4087
|
4088
4088
| (Reuse OCaml pattern match compiler and erase types)
4089
- |
4089
+ | (Patches to pass more information down to Lambda )
4090
4090
|
4091
4091
OCaml Lambda IR
4092
4092
|
4093
4093
|
4094
4094
v
4095
4095
Buckle Lambda IR ------------------+
4096
4096
| ^ |
4097
- | | Lambda Passes (lam_* files)
4097
+ | | 6 Lambda Passes (lam_* files)
4098
4098
| | Optimization/inlining/dead code elimination
4099
4099
| \ |
4100
4100
| \ --------------------------+
@@ -4104,7 +4104,7 @@ <h2 id="_high_level_compiler_workflow"><a class="anchor" href="#_high_level_comp
4104
4104
V
4105
4105
JS IR (J.ml) ---------------------+
4106
4106
| ^ |
4107
- | | JS Passes (js_* files)
4107
+ | | 6 JS Passes (js_* files)
4108
4108
| | Optimization/inlining/dead code elimination
4109
4109
| \ |
4110
4110
| \ -------------------------+
@@ -4368,11 +4368,45 @@ <h3 id="_simple_ocaml_type"><a class="anchor" href="#_simple_ocaml_type"></a>Sim
4368
4368
</ tr >
4369
4369
< tr >
4370
4370
< td class ="tableblock halign-left valign-top "> < p class ="tableblock "> Variant</ p > </ td >
4371
- < td class ="tableblock halign-left valign-top "> < p class ="tableblock "> < strong > internal</ strong > </ p > </ td >
4371
+ < td class ="tableblock halign-left valign-top "> < div > < div class ="paragraph ">
4372
+ < p > < strong > internal</ strong > (subject to change)</ p >
4373
+ </ div >
4374
+ < div class ="paragraph ">
4375
+ < p > Simple Variants: (Variants with only one non-nullary constructor)</ p >
4376
+ </ div >
4377
+ < div class ="listingblock ">
4378
+ < div class ="content ">
4379
+ < pre class ="pygments highlight "> < code data-lang ="ocaml "> < span class ="tok-k "> type</ span > < span class ="tok-n "> tree</ span > < span class ="tok-o "> =</ span >
4380
+ < span class ="tok-o "> |</ span > < span class ="tok-nc "> Leaf</ span >
4381
+ < span class ="tok-o "> |</ span > < span class ="tok-nc "> Node</ span > < span class ="tok-k "> of</ span > < span class ="tok-kt "> int</ span > < span class ="tok-o "> *</ span > < span class ="tok-n "> tree</ span > < span class ="tok-o "> *</ span > < span class ="tok-n "> tree</ span >
4382
+ < span class ="tok-c "> (* Leaf --> 0 *)</ span >
4383
+ < span class ="tok-c "> (* Node(a,b,c) --> [a,b,c]*)</ span > </ code > </ pre >
4384
+ </ div >
4385
+ </ div >
4386
+ < div class ="paragraph ">
4387
+ < p > Complex Variants: (Variants with more than one non-nullary constructor)</ p >
4388
+ </ div >
4389
+ < div class ="listingblock ">
4390
+ < div class ="content ">
4391
+ < pre class ="pygments highlight "> < code data-lang ="ocaml "> < span class ="tok-k "> type</ span > < span class ="tok-n "> u</ span > < span class ="tok-o "> =</ span >
4392
+ < span class ="tok-o "> |</ span > < span class ="tok-nc "> A</ span > < span class ="tok-k "> of</ span > < span class ="tok-kt "> string</ span >
4393
+ < span class ="tok-o "> |</ span > < span class ="tok-nc "> B</ span > < span class ="tok-k "> of</ span > < span class ="tok-kt "> int</ span >
4394
+ < span class ="tok-c "> (* A a --> [a].tag=0 -- tag 0 assignment is optional *)</ span >
4395
+ < span class ="tok-c "> (* B b --> [b].tag=1 *)</ span > </ code > </ pre >
4396
+ </ div >
4397
+ </ div > </ div > </ td >
4372
4398
</ tr >
4373
4399
< tr >
4374
4400
< td class ="tableblock halign-left valign-top "> < p class ="tableblock "> Polymorphic variant</ p > </ td >
4375
- < td class ="tableblock halign-left valign-top "> < p class ="tableblock "> < strong > internal</ strong > </ p > </ td >
4401
+ < td class ="tableblock halign-left valign-top "> < div > < div class ="paragraph ">
4402
+ < p > < strong > internal</ strong > </ p >
4403
+ </ div >
4404
+ < div class ="listingblock ">
4405
+ < div class ="content ">
4406
+ < pre class ="pygments highlight "> < code data-lang ="ocaml "> < span class ="tok-o "> `</ span > < span class ="tok-n "> a</ span > < span class ="tok-c "> (* 97 *)</ span >
4407
+ < span class ="tok-o "> `</ span > < span class ="tok-n "> a</ span > < span class ="tok-mi "> 1</ span > < span class ="tok-mi "> 2</ span > < span class ="tok-c "> (* [97, [1,2] ]*)</ span > </ code > </ pre >
4408
+ </ div >
4409
+ </ div > </ div > </ td >
4376
4410
</ tr >
4377
4411
< tr >
4378
4412
< td class ="tableblock halign-left valign-top "> < p class ="tableblock "> exception</ p > </ td >
0 commit comments