12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364openBasemoduleDiff=structtype'at={global_diff:'a}[@@unboxed]endtype'at='aDiff.toptionletnone=Nonelet[@inline]get_none()=Nonelet[@inline]returndiff=exclave_Some{Diff.diff}let[@inline]mapt~f=exclave_matchtwith|Some{Diff.diff}->Some{Diff.diff=(f[@inlinedhint])diff}|None->None;;let[@inline]bindt~f=exclave_matchtwith|Some{Diff.diff}->(f[@inlinedhint])diff|None->None;;letboth=`both_would_allocate__use_bind_insteadlet[@inline](>>|)xf=exclave_mapx~flet[@inline](>>=)xf=exclave_bindx~fmoduleOptional_syntax=structmoduleOptional_syntax=structlet[@inline]is_none(local_t)=matchtwith|None->true|Some_->false;;let[@inline]unsafe_value(local_t)=matchtwith|Some{Diff.diff}->diff|None->failwith"[Optional_diff.unsafe_value] called on [Optional_diff.none]";;endendincludeOptional_syntax.Optional_syntaxlet[@inline]to_option(local_t)=matchtwith|None->None|Some{Diff.diff}->Somediff;;moduleLet_syntax=structletreturn=returnmoduleLet_syntax=structletreturn=returnletmap=mapletbind=bindletboth=bothmoduleOpen_on_rhs=structendendend