% Table *
%
% module
% main
string2_main(_upvals):-_upvals=[_last,_size],(_s = "sdf",call_cl(_size,[_s,_s2]),writeln_(_s2),call_cl(_last,[_s,_T24]),writeln_(_T24)).
% 12
string2_12(_s1,_s2,_s3,_upvals):-_upvals=[_concat],(call_cl(_concat,[_s1,_s2,_s3])).
% 11
string2_11(_S1,_S2,_upvals):-_upvals=[],(s_le(_S1,_S2)).
% 10
string2_10(_s,_n,_upvals):-_upvals=[],(string_codes(_s,'[|]'(_n,[]))).
% 9
string2_9(_s,_l,_upvals):-_upvals=[],(string_codes(_s,_l)).
% 8
string2_8(_s,_sep,_l,_upvals):-_upvals=[_splitIndex],(call_cl(_splitIndex,[_s,_sep,0.0,_l])).
% 7
string2_7(_s1,_s2,_upvals):-_upvals=[],(string_lower(_s1,_s2)).
% 6
string2_6(_s1,_s2,_upvals):-_upvals=[],(string_upper(_s1,_s2)).
% 5
string2_5(_s1,_s2,_upvals):-_upvals=[_findIndex],(call_cl(_findIndex,[_s1,_s2,0.0,_])).
% 4
string2_4(_s1,_s2,_pos,_upvals):-_upvals=[_findIndex],(call_cl(_findIndex,[_s1,_s2,0.0,_pos])).
% 3
string2_3(_S1,_S2,_upvals):-_upvals=[],(s_size(_S1,_L),s_slice(_S1,1.0,_L,_S2)).
% 2
string2_2(_S1,_S2,_upvals):-_upvals=[],(s_at(_S1,0.0,_S2)).
% at
string2_at(_s,_x,_c,_upvals):-_upvals=[_get],(call_cl(_get,[_s,_x,_c])).
% last
string2_last(_s,_c,_upvals):-_upvals=[_get,_size],(call_cl(_size,[_s,_n]),call_cl(_get,[_s,_n-1.0,_c])).
% concat
string2_concat(_s1,_s2,_s3,_upvals):-_upvals=[],(_s3 = _s2+_s1).
% splitIndex
string2_splitIndex(_s,_sep,_i,_l,_upvals):-_upvals=[_slice,_size,_slice,_size,_math,_math,_findIndex],(call_cl(_findIndex,[_s,_sep,_i,_pos]),writeln_(_math),get_(_math,"inc",T4),_T3 = T4,call_cl(_T3,[_pos,_pos2]),call_cl(_size,[_s,_len]),call_cl(_slice,[_s,_i,_pos,_part1]),_l = '[|]'(_part1,_l2),call(string2_splitIndex(_s,_sep,_pos2,_l2),_upvals);call_cl(_size,[_s,_len]),call_cl(_slice,[_s,_i,_len,_part1]),_l = '[|]'(_part1,[])).
% findIndex
string2_findIndex(_s1,_s2,_i,_pos,_upvals):-_upvals=[_size,_slice,_size],((((call_cl(_size,[_s2,_T1]),call_cl(_slice,[_s1,_i,_i+_T1,_s2])),(_i = _pos);call_cl(_size,[_s1,_T2]),lt(_i,_T2),call(string2_findIndex(_s1,_s2,_i+1.0,_pos),_upvals)))).
% slice
string2_slice(_S1,_I,_J,_S2,_upvals):-_upvals=[],(s_slice2(_S1,_I,_J,_S2)).
% size
string2_size(_s,_n,_upvals):-_upvals=[],(s_size(_s,_n)).
% get
string2_get(_s,_x,_c,_upvals):-_upvals=[],(sub_string(_s,_x,1.0,_,_c)).
% main
string2(X):-creq("math",_math),_get = clos([],string2_get),_size = clos([],string2_size),_slice = clos([],string2_slice),_findIndex = clos([_size,_slice,_size],string2_findIndex),_splitIndex = clos([_slice,_size,_slice,_size,_math,_math,_findIndex],string2_splitIndex),_concat = clos([],string2_concat),_last = clos([_get,_size],string2_last),_at = clos([_get],string2_at),new(T5),set_(T5,"first",clos([],string2_2),T7),set_(T7,"rest",clos([],string2_3),T8),set_(T8,"get",_get,T9),set_(T9,"at",_at,T10),set_(T10,"size",_size,T11),set_(T11,"length",_size,T12),set_(T12,"findIndex",_findIndex,T13),set_(T13,"slice",_slice,T14),set_(T14,"find",clos([_findIndex],string2_4),T15),set_(T15,"has",clos([_findIndex],string2_5),T16),set_(T16,"upper",clos([],string2_6),T17),set_(T17,"lower",clos([],string2_7),T18),set_(T18,"split",clos([_splitIndex],string2_8),T19),set_(T19,"toCodes",clos([],string2_9),T20),set_(T20,"code",clos([],string2_10),T21),set_(T21,"lessOrEqual",clos([],string2_11),T22),set_(T22,"_add",clos([_concat],string2_12),T23),set_(T23,"concat",_concat,T6),_t = T6,_main = clos([_last,_size],string2_main),X=_t.