blob: 2935650b05bcf0f979ce8251c9fe9f4124c8add2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
(* Check what opcode is in the formula at slot 3 *)
open Nock_lib
let () =
Eio_main.run (fun env ->
let fs = Eio.Stdenv.fs env in
let pill_bytes = Eio.Path.(load (fs / "ivory.pill")) |> Bytes.of_string in
let pill = Serial.cue pill_bytes in
let core = Noun.tail pill in
(* Get the formula at slot 3 *)
let formula = Noun.slot (Z.of_int 3) core in
Printf.printf "Formula (slot 3) mug: 0x%08lx\n" (Noun.mug formula);
Printf.printf "Formula is: %s\n" (if Noun.is_cell formula then "cell" else "atom");
if Noun.is_cell formula then begin
let h = Noun.head formula in
Printf.printf "Formula head is: %s\n" (if Noun.is_cell h then "cell" else "atom");
match h with
| Noun.Atom { z; _ } when Z.fits_int z ->
Printf.printf "Formula starts with opcode: %d\n" (Z.to_int z)
| Noun.Cell _ ->
Printf.printf "Formula starts with CELL (distribution)\n"
| _ ->
Printf.printf "Formula head is large atom\n"
end
)
|