1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798open!Corelet%expect_test_=letx=5inletvalue,string=[%demox+10]inprint_endlinestring;print_endline"==========";print_endline(Int.to_stringvalue);[%expect{|
x + 10
==========
15 |}];;moduleM=structtype'at=Tof'aletof_int(x:int)=Txletof_string(x:string)=TxmoduleLet_syntax=structmoduleLet_syntax=structletbind(Tx)~f=fxletmap(Tx)~f=T(fx)endendendlet%expect_test_=letTvalue,string=[%demolet%bind.Mpos=let%map.Ma=M.of_int70inainlet%bind.Mlong_string=M.of_string"xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx \
contents xxxxx"inlet%map.Mlen=M.of_int8inString.sublong_string~pos~len|>funx->x]inprint_endlinestring;print_endline"==========";print_endlinevalue;[%expect{|
let%bind.M pos =
let%map.M a = M.of_int 70 in
a
in
let%bind.M long_string =
M.of_string
"xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx \
contents xxxxx"
in
let%map.M len = M.of_int 8 in
String.sub long_string ~pos ~len |> fun x -> x
==========
contents |}];;let%expect_test"demoing a module's structure"=letmoduleExample=[%demoletx=1moduleT=structtypet=|Foo|Bar[@@derivingsexp]leta=Fooletb=Barend]inletx=Example.xinleta=Example.T.ainletb=Example.T.binprint_s[%message(x:int)(a:Example.T.t)(b:Example.T.t)];[%expect{| ((x 1) (a Foo) (b Bar)) |}];print_endlineExample.ppx_demo_string;[%expect{|
let x = 1
module T = struct
type t =
| Foo
| Bar
[@@deriving sexp]
let a = Foo
let b = Bar
end |}];;