@@ -918,10 +918,17 @@ CapJitAddTypeSignature( "ListWithIdenticalEntries", [ IsInt, IsObject ], functio
918
918
end );
919
919
920
920
CapJitAddTypeSignature( " Concatenation" , [ IsList ] , function ( input_types )
921
+ local filter;
921
922
922
- Assert ( 0 , input_types[ 1 ] .element_type.filter = IsList );
923
+ if input_types[ 1 ] .element_type.filter = IsList then
924
+ filter := IsList;
925
+ elif input_types[ 1 ] .element_type.filter = IsLazyArray then
926
+ filter := IsLazyArray;
927
+ else
928
+ Error( input_types[ 1 ] .element_type.filter, " is not in [ IsList, IsLazyArray ]\n " );
929
+ fi ;
923
930
924
- return rec ( filter := IsList , element_type := input_types[ 1 ] .element_type.element_type );
931
+ return rec ( filter := filter , element_type := input_types[ 1 ] .element_type.element_type );
925
932
926
933
end );
927
934
@@ -1100,6 +1107,42 @@ CapJitAddTypeSignature( "MatElm", [ IsList, IsInt, IsInt ], function ( input_typ
1100
1107
1101
1108
end );
1102
1109
1110
+ CapJitAddTypeSignature( " LazyArray" , [ IsInt, IsFunction ] , function ( input_types )
1111
+
1112
+ return rec ( filter := IsLazyArray, element_type := rec ( filter := IsInt ) );
1113
+
1114
+ end );
1115
+
1116
+ CapJitAddTypeSignature( " LazyStandardInterval" , [ IsInt ] , function ( input_types )
1117
+
1118
+ return rec ( filter := IsLazyArray, element_type := rec ( filter := IsInt ) );
1119
+
1120
+ end );
1121
+
1122
+ CapJitAddTypeSignature( " LazyInterval" , [ IsInt, IsInt ] , function ( input_types )
1123
+
1124
+ return rec ( filter := IsLazyInterval, element_type := rec ( filter := IsInt ) );
1125
+
1126
+ end );
1127
+
1128
+ CapJitAddTypeSignature( " LazyConstantArray" , [ IsInt, IsInt ] , function ( input_types )
1129
+
1130
+ return rec ( filter := IsLazyConstantArray, element_type := rec ( filter := IsInt ) );
1131
+
1132
+ end );
1133
+
1134
+ CapJitAddTypeSignature( " LazyArrayFromList" , [ IsList ] , function ( input_types )
1135
+
1136
+ return rec ( filter := IsLazyArrayFromList, element_type := rec ( filter := IsInt ) );
1137
+
1138
+ end );
1139
+
1140
+ CapJitAddTypeSignature( " ListOfValues" , [ IsLazyArray ] , function ( input_types )
1141
+
1142
+ return rec ( filter := IsList, element_type := rec ( filter := IsInt ) );
1143
+
1144
+ end );
1145
+
1103
1146
CapJitAddTypeSignature( " LazyHList" , [ IsList, IsFunction ] , function ( args, func_stack )
1104
1147
1105
1148
args := ShallowCopy( args );
0 commit comments