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.
Created
May 2, 2023 20:05
-
-
Save aantron/a65098b0febb3ac34cb63ea9285d9316 to your computer and use it in GitHub Desktop.
OCaml runtime value-walking printers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(executable | |
(name test) | |
(libraries console.lib dum inspect)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(lang dune 3.0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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