Skip to content

Instantly share code, notes, and snippets.

@aantron
Created May 2, 2023 20:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aantron/a65098b0febb3ac34cb63ea9285d9316 to your computer and use it in GitHub Desktop.
Save aantron/a65098b0febb3ac34cb63ea9285d9316 to your computer and use it in GitHub Desktop.
OCaml runtime value-walking printers

This gist compares the outputs of reason-native's Console.log, Dum, and Inspect's S-expression printer on a test suite that has them print almost every kind of OCaml value.

(executable
(name test)
(libraries console.lib dum inspect))
(lang dune 3.0)
type variant_no_payloads =
| Foo
| Bar
type other_variant =
| Other
type record = {
foo : int;
bar : string;
}
type variant_with_payload =
| A
| B of int
| C of int * string
| D of record
| E of {baz : int; quux : string}
| F
type extensible = ..
type extensible +=
| Ext
| Janky_stream
| Bad_ISP of int
| Sorry_chat of int * string
| Trying_my_best of record
| Good_day of {good : int; day : string}
| Blah
type other_extensible = ..
type other_extensible +=
| Other_extensible
class a_class =
object
val x = "foo"
method const () = "bar"
end
module type LIST = module type of List
type 'a list_like =
| Nil
| Cons of 'a * 'a list_like
type 'a another_list_like =
| Typed
| Reflections of 'a * 'a another_list_like
type hetlist =
| Empty : hetlist
| Het : 'a * hetlist -> hetlist
type 'a tree =
| Leaf
| Node of 'a * 'a tree * 'a tree
type logger = {
log : 'a. 'a -> unit;
}
let show logger description value =
print_endline description;
logger.log value;
(* print_newline (); *)
()
let exercise title logger =
print_newline ();
print_endline title;
show logger {|"Hello, chat!" (string)|} "Hello, chat!";
show logger "42 (int)" 42;
show logger "()" ();
show logger "`Welcome" `Welcome;
show logger "`Hi_chat 24" (`Hi_chat 24);
show logger "42.42" 42.42;
show logger "true" true;
show logger "'a'" 'a';
show logger {|λ|} "λ";
show logger "(fun x -> x)" (fun x -> x);
show logger "Foo" Foo;
show logger "Bar" Bar;
show logger "Other" Other;
show logger "Not_found" Not_found;
show logger "Ext" Ext;
show logger "Janky_stream" Janky_stream;
print_newline ();
show logger "[|1; 2|]" [|1; 2|];
show logger "[|1.1; 2.2|]" [|1.1; 2.2|];
show logger "[1; 2]" [1; 2];
show logger {|{foo = 1; bar = "bar"}|} {foo = 1; bar = "bar"};
print_newline ();
show logger "A" A;
show logger "B 42" (B 42);
show logger {|C (42, "foo")|} (C (42, "foo"));
show logger {|D {foo = 42; bar = "foo"}|} (D {foo = 42; bar = "foo"});
show logger {|E {baz = 42; quux = "foo"}|} (E {baz = 42; quux = "foo"});
show logger "F" F;
print_newline ();
show logger "Bad_ISP 42" (Bad_ISP 42);
show logger {|Sorry_chat (42, "ISP :(")|} (Sorry_chat (42, "ISP :("));
show logger
{|(Trying_my_best {foo = 42; bar = "foo"})|}
(Trying_my_best {foo = 42; bar = "foo"});
show logger
{|Good_day {good = 42; day = "foo"}|} (Good_day {good = 42; day = "foo"});
show logger "Blah" Blah;
show logger "Other_extensible" Other_extensible;
print_newline ();
show logger "object end" object end;
show logger "object val x = 1 end" object val x = 1 end;
show logger
{|object val x = 1 val y = "foo" end|} object val x = 1 val y = "foo" end;
show logger "object method id x = x end" object method id x = x end;
show logger "new a_class" (new a_class);
show logger "(module List : LIST)" (module List : LIST);
print_newline ();
show logger "[]" [];
show logger "[42]" [42];
show logger "[42; 43]" [42; 43];
show logger "Nil" Nil;
show logger "Cons (42, Nil)" (Cons (42, Nil));
show logger "Cons (42, Cons (43, Nil))" (Cons (42, Cons (43, Nil)));
show logger "Typed" Typed;
show logger {|Reflections ("foo", Typed)|} (Reflections ("foo", Typed));
print_newline ();
show logger "lazy 42" (lazy 42);
show logger "lazy (Fun.id 42)" (lazy (Fun.id 42));
let forced_lazy = lazy (Fun.id 42) in
let _ = Lazy.force forced_lazy in
show logger "forced_lazy" forced_lazy;
print_newline ();
show logger "Empty" Empty;
show logger {|Het ("foo", Empty)|} (Het ("foo", Empty));
show logger {|Het ("foo", Het (42, Empty))|} (Het ("foo", Het (42, Empty)));
print_newline ();
show logger "Leaf" Leaf;
show logger
"Node (42, Leaf, Node (43, Leaf, Leaf))"
(Node (42, Leaf, Node (43, Leaf, Leaf)));
print_newline ();
show logger {|`Myriad "colors"|} (`Myriad "colors");
show logger {|`Lessp (42, "foo")|} (`Lessp (42, "foo"));
show logger
{|`Memish {foo = 42; bar = "foo"}|} (`Memish {foo = 42; bar = "foo"});
print_newline ();
show logger {|(42, "foo", "bar")|} (42, "foo", "bar");
(* NOTE: Printing int32 and int64 causes segfault in Console.log. *)
print_newline ();
(* show logger "42l" 42l; *)
(* show logger "42L" 42L; *)
show logger "Nativeint.max_int" Nativeint.max_int;
(* show logger "Int32.max_int" Int32.max_int; *)
print_newline ();
show logger "None" None;
show logger "Some 42" (Some 42);
print_newline ();
(* NOTE Printing a weak reference array segfaults in Console.log. *)
(* show logger "Weak.create 8" (Weak.create 8); *)
let weak = Weak.create 8 in
Weak.set weak 0 (Some "foo");
show logger "Weak.get weak 0" (Weak.get weak 0);
()
let () =
exercise "Dum.to_stdout" {log = Dum.to_stdout};
exercise "reason-native Console.log" {log = Console.log};
exercise "Inspect.Sexpr.dump" {log = Inspect.Sexpr.dump}
reason-native Console.log
"Hello, chat!" (string)
Hello, chat!
42 (int)
42
()
0
`Welcome
-186504062
`Hi_chat 24
{575849462, 24}
42.42
42.42
true
1
'a'
97
λ
λ
(fun x -> x)
closure(46995822179272)
Foo
0
Bar
1
Other
0
Not_found
{"Not_found", -7}
Ext
{"Dune__exe__Foo.Ext", 5}
Janky_stream
{"Dune__exe__Foo.Janky_stream", 6}
[|1; 2|]
{1, 2}
[|1.1; 2.2|]
[|1.1, 2.2|]
[1; 2]
[1, 2]
{foo = 1; bar = "bar"}
{1, "bar"}
A
0
B 42
{42}
C (42, "foo")
{42, "foo"}
D {foo = 42; bar = "foo"}
{{42, "foo"}}
E {baz = 42; quux = "foo"}
{42, "foo"}
F
1
Bad_ISP 42
{{"Dune__exe__Foo.Bad_ISP", 7}, 42}
Sorry_chat (42, "ISP :(")
{{"Dune__exe__Foo.Sorry_chat", 8}, 42, "ISP :("}
(Trying_my_best {foo = 42; bar = "foo"})
{{"Dune__exe__Foo.Trying_my_best", 9}, {42, "foo"}}
Good_day {good = 42; day = "foo"}
{{"Dune__exe__Foo.Good_day", 10}, 42, "foo"}
Blah
{"Dune__exe__Foo.Blah", 11}
Other_extensible
{"Dune__exe__Foo.Other_extensible", 12}
object end
{{0, -1, {}}, 13}
object val x = 1 end
{{0, -1, {}}, 14, 1}
object val x = 1 val y = "foo" end
{{0, -1, {}}, 15, 1, "foo"}
object method id x = x end
{{1, 7, closure(46995822179284), 23515}, 16}
new a_class
{{1, 7, closure(46995822179256), -899810973}, 17, "foo"}
(module List : LIST)
{
closure(46995822205424),
closure(46995822205440),
closure(46995822205456),
closure(46995822205472),
closure(46995822205488),
closure(46995822205656),
closure(46995822205668),
closure(46995822205700),
closure(46995822205700),
closure(46995822205700),
closure(46995822205716),
closure(46995822205684),
closure(46995822205796),
closure(46995822205808),
closure(46995822204868),
closure(46995822204996),
closure(46995822205012),
10000,
closure(46995822205072),
closure(46995822205136),
@max-length
}
[]
0
[42]
[42]
[42; 43]
[42, 43]
Nil
0
Cons (42, Nil)
[42]
Cons (42, Cons (43, Nil))
[42, 43]
Typed
0
Reflections ("foo", Typed)
["foo"]
lazy 42
42
lazy (Fun.id 42)
~lazy
forced_lazy
{42}
Empty
0
Het ("foo", Empty)
["foo"]
Het ("foo", Het (42, Empty))
["foo", 42]
Leaf
0
Node (42, Leaf, Node (43, Leaf, Leaf))
{42, 0, {43, 0, 0}}
`Myriad "colors"
{-1063170586, "colors"}
`Lessp (42, "foo")
{93211351, {42, "foo"}}
`Memish {foo = 42; bar = "foo"}
{961524329, {42, "foo"}}
(42, "foo", "bar")
{42, "foo", "bar"}
Nativeint.max_int
{{}, 4611686018427387903}
None
0
Some 42
{42}
Weak.get weak 0
{"foo"}
Dum.to_stdout
"Hello, chat!" (string)
"Hello, chat!"
42 (int)
42
()
0
`Welcome
-186504062
`Hi_chat 24
(575849462 24)
42.42
42.42
true
1
'a'
97
λ
"\206\187"
(fun x -> x)
closure (36028797018963970)
Foo
0
Bar
1
Other
0
Not_found
object-7 ()
Ext
object10 ()
Janky_stream
object11 ()
[|1; 2|]
(1 2)
[|1.1; 2.2|]
[| 1.1 2.2 |]
[1; 2]
[ 1 2 ]
{foo = 1; bar = "bar"}
(1 "bar")
A
0
B 42
(42)
C (42, "foo")
tag1 (42 "foo")
D {foo = 42; bar = "foo"}
tag2 ((42 "foo"))
E {baz = 42; quux = "foo"}
tag3 (42 "foo")
F
1
Bad_ISP 42
(object12 () 42)
Sorry_chat (42, "ISP :(")
(object13 () 42 "ISP :(")
(Trying_my_best {foo = 42; bar = "foo"})
(object14 () (42 "foo"))
Good_day {good = 42; day = "foo"}
(object15 () 42 "foo")
Blah
object16 ()
Other_extensible
object17 ()
object end
object18 ()
object val x = 1 end
object19 (1)
object val x = 1 val y = "foo" end
object20 (1 "foo")
object method id x = x end
object21 ()
new a_class
object22 ("foo")
(module List : LIST)
(
closure (36028797018963970)
closure (72057594037927939 <out of heap>)
closure (72057594037927939 <out of heap>)
closure (72057594037927939 <out of heap>)
closure (36028797018963970)
closure (36028797018963970)
closure (72057594037927939 <out of heap>)
closure (72057594037927939 <out of heap>)
closure (36028797018963970)
closure (72057594037927939 <out of heap>)
closure (72057594037927939 <out of heap>)
closure (72057594037927939 <out of heap>)
#0: closure (36028797018963970)
#0
closure (108086391056891907 <out of heap>)
closure (108086391056891907 <out of heap>)
closure (72057594037927939 <out of heap>)
closure (72057594037927939 <out of heap>)
closure (72057594037927939 <out of heap>)
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
#1: <...>
#1
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
<...>
#2: <...>
#2
#2
<...>
<...>
<...>
<...>
<...>
<...>
<...>
10000
<...>
<...>
)
[]
0
[42]
[ 42 ]
[42; 43]
[ 42 43 ]
Nil
0
Cons (42, Nil)
[ 42 ]
Cons (42, Cons (43, Nil))
[ 42 43 ]
Typed
0
Reflections ("foo", Typed)
[ "foo" ]
lazy 42
42
lazy (Fun.id 42)
<lazy>
forced_lazy
<forward>
Empty
0
Het ("foo", Empty)
[ "foo" ]
Het ("foo", Het (42, Empty))
[ "foo" 42 ]
Leaf
0
Node (42, Leaf, Node (43, Leaf, Leaf))
(42 0 (43 0 0))
`Myriad "colors"
(-1063170586 "colors")
`Lessp (42, "foo")
(93211351 (42 "foo"))
`Memish {foo = 42; bar = "foo"}
(961524329 (42 "foo"))
(42, "foo", "bar")
(42 "foo" "bar")
Nativeint.max_int
<custom>
None
0
Some 42
(42)
Weak.get weak 0
("foo")
Inspect.Sexpr.dump
"Hello, chat!" (string)
42 (int)
()
`Welcome
`Hi_chat 24
(DUMP (STR/0 :LEN 12 "Hello, chat!"))(DUMP 42)(DUMP 0)(DUMP -186504062)
42.42
(DUMP (BLK/0 :TAG 0 :VALUES 575849462 24))
true
(DUMP 42.420000)
'a'
(DUMP 1)
λ
(DUMP 97)
(fun x -> x)
(DUMP (STR/0 :LEN 2 "\206\187"))(DUMP
(CLOS/0
:TAG 247
:VALUES
0x55F8B0B23020
36028797018963970))
Foo
Bar
(DUMP 0)
Other
(DUMP 1)
Not_found
(DUMP 0)
Ext
(DUMP (OBJ/0 :TAG 248 :VALUES (STR/1 :LEN 9 "Not_found") -7))
Janky_stream
(DUMP (OBJ/0 :TAG 248 :VALUES (STR/1 :LEN 18 "Dune__exe__Foo.Ext") 13))
(DUMP
(OBJ/0 :TAG 248 :VALUES (STR/1 :LEN 27 "Dune__exe__Foo.Janky_stream") 14))
[|1; 2|]
[|1.1; 2.2|]
(DUMP (BLK/0 :TAG 0 :VALUES 1 2))
[1; 2]
(DUMP (DBLA/0 1.1 2.2))(DUMP
(BLK/0
:TAG 0
:VALUES
1
(BLK/1
:TAG 0
:VALUES
2
0)))
{foo = 1; bar = "bar"}
A
(DUMP (BLK/0 :TAG 0 :VALUES 1 (STR/1 :LEN 3 "bar")))
B 42
(DUMP 0)(DUMP
(BLK/0
:TAG 0
:VALUES
42))
C (42, "foo")
D {foo = 42; bar = "foo"}
(DUMP (BLK/0 :TAG 1 :VALUES 42 (STR/1 :LEN 3 "foo")))(DUMP
(BLK/0
:TAG 2
:VALUES
(BLK/1
:TAG 0
:VALUES
42
(STR/2
:LEN 3
"foo"))))
E {baz = 42; quux = "foo"}
F
(DUMP (BLK/0 :TAG 3 :VALUES 42 (STR/1 :LEN 3 "foo")))
Bad_ISP 42
(DUMP 1)(DUMP
(BLK/0
:TAG 0
:VALUES
(OBJ/1
:TAG 248
:VALUES
(STR/2
:LEN 22
"Dune__exe__Foo.Bad_ISP")
15)
42))
Sorry_chat (42, "ISP :(")
(DUMP
(BLK/0
:TAG 0
:VALUES
(OBJ/1 :TAG 248 :VALUES (STR/2 :LEN 25 "Dune__exe__Foo.Sorry_chat") 16)
42
(STR/3 :LEN 6 "ISP :(")))
(Trying_my_best {foo = 42; bar = "foo"})
(DUMP
(BLK/0
:TAG 0
:VALUES
(OBJ/1
:TAG 248
:VALUES
(STR/2
:LEN 29
"Dune__exe__Foo.Trying_my_best")
17)
(BLK/3
:TAG 0
:VALUES
42
(STR/4 :LEN 3 "foo"))))
Good_day {good = 42; day = "foo"}
(DUMP
(BLK/0
:TAG 0
:VALUES
(OBJ/1
:TAG 248
:VALUES
(STR/2
:LEN 23
"Dune__exe__Foo.Good_day")
18)
42
(STR/3
:LEN 3
"foo")))
Blah
Other_extensible
(DUMP (OBJ/0 :TAG 248 :VALUES (STR/1 :LEN 19 "Dune__exe__Foo.Blah") 19))
(DUMP
(OBJ/0
:TAG 248
:VALUES
(STR/1 :LEN 31 "Dune__exe__Foo.Other_extensible")
20))
object end
(DUMP
(OBJ/0
:TAG 248
:VALUES
(BLK/1 :TAG 0 :VALUES 0 -1 (BLK/2 :TAG 0 :VALUES))
21))
object val x = 1 end
(DUMP
(OBJ/0
:TAG 248
:VALUES
(BLK/1 :TAG 0 :VALUES 0 -1 (BLK/2 :TAG 0 :VALUES))
22
1))
object val x = 1 val y = "foo" end
(DUMP
(OBJ/0
:TAG 248
:VALUES
(BLK/1
:TAG 0
:VALUES
0
-1
(BLK/2 :TAG 0 :VALUES))
23
1
(STR/3 :LEN 3 "foo")))
object method id x = x end
(DUMP
(OBJ/0
:TAG 248
:VALUES
(BLK/1
:TAG 0
:VALUES
1
7
(CLOS/2
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B22410)
23515)
24))
new a_class
(DUMP
(OBJ/0
:TAG 248
:VALUES
(BLK/1
:TAG 0
:VALUES
1
7
(CLOS/2
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B22330)
-899810973)
25
(STR/3
:LEN 3
"foo")))
(module List : LIST)
(DUMP
(BLK/0
:TAG 0
:VALUES
(CLOS/1 :TAG 247 :VALUES 0x55F8B0B32B90 36028797018963970)
(CLOS/2
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B36940)
(CLOS/3
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B36990)
(CLOS/4
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B32BB0)
(CLOS/5 :TAG 247 :VALUES 0x55F8B0B32BE0 36028797018963970)
(CLOS/6 :TAG 247 :VALUES 0x55F8B0B32C00 36028797018963970)
(CLOS/7
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B32C20)
(CLOS/8
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B32CA0)
(CLOS/9 :TAG 247 :VALUES 0x55F8B0B32D70 36028797018963970)
(CLOS/10
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B32E70)
(CLOS/11
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B2BA70)
(CLOS/12
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B32D30)
(CLOS/13 :TAG 247 :VALUES 0x55F8B0B32ED0 36028797018963970)
@CLOS/13
(CLOS/14
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B36A00)
(CLOS/15
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B36A90)
(CLOS/16
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33110)
(CLOS/17
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B331C0)
(CLOS/18
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B32F10)
(CLOS/19
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33020)
(CLOS/20
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33040)
(CLOS/21 :TAG 247 :VALUES 0x55F8B0B33F50 36028797018963970)
(CLOS/22
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B340A0)
(CLOS/23
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B34140)
(CLOS/24
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B331E0)
(CLOS/25
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B33230)
(CLOS/26
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B33430)
(CLOS/27
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B33280)
(CLOS/28
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B33330)
(CLOS/29
:TAG 247
:VALUES
0x55F8B0B21B60
144115188075855875
0x55F8B0B334B0)
(CLOS/30
:TAG 247
:VALUES
0x55F8B0B21B60
144115188075855875
0x55F8B0B33530)
(CLOS/31
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B335B0)
(CLOS/32
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33610)
(CLOS/33
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B33670)
(CLOS/34
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B33700)
(CLOS/35
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33790)
(CLOS/36
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B337F0)
(CLOS/37
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33BA0)
(CLOS/38
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33C10)
(CLOS/39
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33C90)
(CLOS/40 :TAG 247 :VALUES 0x55F8B0B33CE0 36028797018963970)
@CLOS/40
(CLOS/41
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33E40)
(CLOS/42
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B34250)
(CLOS/43
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B343D0)
(CLOS/44
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33830)
(CLOS/45
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B338B0)
(CLOS/46
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33940)
(CLOS/47
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33990)
(CLOS/48
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B339F0)
(CLOS/49
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33A60)
(CLOS/50
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33AA0)
(CLOS/51
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B33B30)
(CLOS/52 :TAG 247 :VALUES 0x55F8B0B34540 36028797018963970)
(CLOS/53
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B345D0)
(CLOS/54
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B34760)
@CLOS/54
@CLOS/54
(CLOS/55
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B35530)
(CLOS/56
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B34670)
(CLOS/57 :TAG 247 :VALUES 0x55F8B0B36B20 36028797018963970)
(CLOS/58 :TAG 247 :VALUES 0x55F8B0B36C30 36028797018963970)
(CLOS/59
:TAG 247
:VALUES
0x55F8B0B21E40
72057594037927939
0x55F8B0B32B60)
(CLOS/60
:TAG 247
:VALUES
0x55F8B0B21B60
144115188075855875
0x55F8B0B32D80)
(CLOS/61
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B32DF0)
10000
(CLOS/62
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B32F90)
(CLOS/63
:TAG 247
:VALUES
0x55F8B0B21D30
108086391056891907
0x55F8B0B33160)))
[]
[42]
(DUMP 0)
[42; 43]
(DUMP (BLK/0 :TAG 0 :VALUES 42 0))(DUMP
(BLK/0
:TAG 0
:VALUES
42
(BLK/1
:TAG 0
:VALUES
43
0)))
Nil
Cons (42, Nil)
(DUMP 0)
Cons (42, Cons (43, Nil))
(DUMP (BLK/0 :TAG 0 :VALUES 42 0))(DUMP
(BLK/0
:TAG 0
:VALUES
42
(BLK/1 :TAG 0 :VALUES 43 0)))
Typed
Reflections ("foo", Typed)
(DUMP 0)
lazy 42
(DUMP (BLK/0 :TAG 0 :VALUES (STR/1 :LEN 3 "foo") 0))
lazy (Fun.id 42)
(DUMP 42)
(DUMP
(LAZY/0
:TAG 246
:VALUES
(CLOS/1 :TAG 247 :VALUES 0x55F8B0B23030 36028797018963970)))
forced_lazy
(DUMP
(FWD/0
:TAG 250
:VALUES
42))
Empty
Het ("foo", Empty)
(DUMP 0)
Het ("foo", Het (42, Empty))
(DUMP (BLK/0 :TAG 0 :VALUES (STR/1 :LEN 3 "foo") 0))(DUMP
(BLK/0
:TAG 0
:VALUES
(STR/1
:LEN 3
"foo")
(BLK/2
:TAG 0
:VALUES
42
0)))
Leaf
Node (42, Leaf, Node (43, Leaf, Leaf))
(DUMP 0)
`Myriad "colors"
(DUMP (BLK/0 :TAG 0 :VALUES 42 0 (BLK/1 :TAG 0 :VALUES 43 0 0)))
`Lessp (42, "foo")
(DUMP (BLK/0 :TAG 0 :VALUES -1063170586 (STR/1 :LEN 6 "colors")))(DUMP
(BLK/0
:TAG 0
:VALUES
93211351
(BLK/1
:TAG 0
:VALUES
42
(STR/2
:LEN 3
"foo"))))
`Memish {foo = 42; bar = "foo"}
(DUMP
(BLK/0
:TAG 0
:VALUES
961524329
(BLK/1 :TAG 0 :VALUES 42 (STR/2 :LEN 3 "foo"))))
(42, "foo", "bar")
(DUMP
(BLK/0
:TAG 0
:VALUES
42
(STR/1
:LEN 3
"foo")
(STR/2
:LEN 3
"bar")))
Nativeint.max_int
None
(DUMP 9223372036854775807n)
Some 42
(DUMP 0)
Weak.get weak 0
(DUMP (BLK/0 :TAG 0 :VALUES 42))(DUMP
(BLK/0
:TAG 0
:VALUES
(STR/1
:LEN 3
"foo")))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment