mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-04 12:18:19 +00:00
Compute list element stores lazily
This commit is contained in:
parent
27b9dd8253
commit
822aa71a0a
2 changed files with 80 additions and 46 deletions
|
@ -1,46 +1,67 @@
|
|||
procedure Test.0 ():
|
||||
let Test.29 : Int1 = false;
|
||||
let Test.30 : Int1 = true;
|
||||
let Test.1 : List Int1 = Array [Test.29, Test.30];
|
||||
joinpoint Test.19:
|
||||
let Test.36 : Int1 = false;
|
||||
let Test.37 : Int1 = true;
|
||||
let Test.1 : List Int1 = Array [Test.36, Test.37];
|
||||
joinpoint Test.10:
|
||||
let Test.8 : Str = "E";
|
||||
ret Test.8;
|
||||
in
|
||||
joinpoint Test.17:
|
||||
let Test.7 : Str = "D";
|
||||
ret Test.7;
|
||||
in
|
||||
joinpoint Test.14:
|
||||
let Test.6 : Str = "C";
|
||||
ret Test.6;
|
||||
in
|
||||
joinpoint Test.11:
|
||||
joinpoint Test.9:
|
||||
let Test.5 : Str = "B";
|
||||
ret Test.5;
|
||||
in
|
||||
joinpoint Test.9:
|
||||
let Test.33 : U64 = lowlevel ListLen Test.1;
|
||||
let Test.34 : U64 = 0i64;
|
||||
let Test.35 : Int1 = lowlevel Eq Test.33 Test.34;
|
||||
if Test.35 then
|
||||
dec Test.1;
|
||||
let Test.4 : Str = "A";
|
||||
ret Test.4;
|
||||
in
|
||||
let Test.26 : U64 = lowlevel ListLen Test.1;
|
||||
let Test.27 : U64 = 0i64;
|
||||
let Test.28 : Int1 = lowlevel Eq Test.26 Test.27;
|
||||
if Test.28 then
|
||||
dec Test.1;
|
||||
jump Test.9;
|
||||
else
|
||||
let Test.23 : U64 = lowlevel ListLen Test.1;
|
||||
let Test.24 : U64 = 1i64;
|
||||
let Test.25 : Int1 = lowlevel Eq Test.23 Test.24;
|
||||
if Test.25 then
|
||||
let Test.30 : U64 = lowlevel ListLen Test.1;
|
||||
let Test.31 : U64 = 1i64;
|
||||
let Test.32 : Int1 = lowlevel Eq Test.30 Test.31;
|
||||
if Test.32 then
|
||||
let Test.11 : U64 = 0i64;
|
||||
let Test.12 : Int1 = lowlevel ListGetUnsafe Test.1 Test.11;
|
||||
dec Test.1;
|
||||
jump Test.9;
|
||||
else
|
||||
let Test.20 : U64 = lowlevel ListLen Test.1;
|
||||
dec Test.1;
|
||||
let Test.21 : U64 = 2i64;
|
||||
let Test.22 : Int1 = lowlevel NumGte Test.20 Test.21;
|
||||
if Test.22 then
|
||||
let Test.13 : Int1 = false;
|
||||
let Test.14 : Int1 = lowlevel Eq Test.13 Test.12;
|
||||
if Test.14 then
|
||||
jump Test.9;
|
||||
else
|
||||
jump Test.9;
|
||||
jump Test.10;
|
||||
else
|
||||
let Test.27 : U64 = lowlevel ListLen Test.1;
|
||||
let Test.28 : U64 = 2i64;
|
||||
let Test.29 : Int1 = lowlevel NumGte Test.27 Test.28;
|
||||
if Test.29 then
|
||||
let Test.19 : U64 = 0i64;
|
||||
let Test.20 : Int1 = lowlevel ListGetUnsafe Test.1 Test.19;
|
||||
let Test.21 : Int1 = false;
|
||||
let Test.22 : Int1 = lowlevel Eq Test.21 Test.20;
|
||||
if Test.22 then
|
||||
let Test.15 : U64 = 1i64;
|
||||
let Test.16 : Int1 = lowlevel ListGetUnsafe Test.1 Test.15;
|
||||
dec Test.1;
|
||||
let Test.17 : Int1 = false;
|
||||
let Test.18 : Int1 = lowlevel Eq Test.17 Test.16;
|
||||
if Test.18 then
|
||||
let Test.6 : Str = "C";
|
||||
ret Test.6;
|
||||
else
|
||||
let Test.7 : Str = "D";
|
||||
ret Test.7;
|
||||
else
|
||||
dec Test.1;
|
||||
jump Test.10;
|
||||
else
|
||||
let Test.23 : U64 = 0i64;
|
||||
let Test.24 : Int1 = lowlevel ListGetUnsafe Test.1 Test.23;
|
||||
dec Test.1;
|
||||
let Test.25 : Int1 = false;
|
||||
let Test.26 : Int1 = lowlevel Eq Test.25 Test.24;
|
||||
if Test.26 then
|
||||
jump Test.9;
|
||||
else
|
||||
jump Test.10;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue