source: to-imperative/trunk/library/List/List.cc @ 1991

Last change on this file since 1991 was 1991, checked in by orlov, 15 years ago
  • iter, lsplit, and rsplit are renamed to RF_iter, RF_lsplit, and RF_rsplit.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 19.1 KB
Line 
1#include <rf_core.hh>
2#include <refal/Apply.hh>
3#include <refal/Arithm.hh>
4#include <refal/Access.hh>
5#include "List.hh"
6
7namespace refal
8{
9
10using namespace rfrt;
11
12namespace List
13{
14
15RF_DECL (Deparen_m_Term);
16
17RF_DECL (Paren_m_Term);
18
19RF_DECL (Paren_m_Term__0);
20
21RF_DECL (Deparen_m_Term__0);
22
23static Expr _c_0;
24
25static Expr _c_1;
26
27static Expr _c_2;
28
29static Expr _c_3;
30
31static Expr _c_4;
32
33RF_FUNC (Deparen_m_Term, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
34  {
35    {
36      if (_v_arg1.symbol_at (0))
37      {
38        goto _block1__branch1;
39      }
40      Expr _v_deref__arg1 (_v_arg1, 0);
41      uintptr_t _v_len1 = _v_deref__arg1.get_len ();
42      uintptr_t _v_len2 = 0;
43      if ((_v_len1 < _v_len2))
44      {
45        goto _block1__branch1;
46      }
47      uintptr_t _v_len__xpr = (_v_len1 - _v_len2);
48      Expr _ve_xpr (_v_deref__arg1, 0, _v_len__xpr);
49      _v_res1 = _ve_xpr;
50      goto _block1;
51    }
52  _block1__branch1: {}
53    _v_res1 = _v_arg1;
54  }
55_block1: {}
56RF_END
57
58RF_FUNC (Paren_m_Term, (RF_ARG _vt_erm;;), (RF_RES _v_res1;;))
59  _v_res1 = _vt_erm;
60RF_END
61
62RF_FUNC (Zip, (RF_ARG _ve_list1, _ve_list2;;), (RF_RES _v_res1;;))
63  Expr _v_list1__1 (_ve_list1);
64  Expr _v_list2__1 (_ve_list2);
65  Expr _ve_new_m_list (empty);
66  for ( ; ; )
67  {
68    {
69      if ((_v_list1__1.get_len () != 0))
70      {
71        goto _iter1;
72      }
73      _v_res1 = _ve_new_m_list;
74      goto _exit__iter1;
75    }
76  _iter1: {}
77    uintptr_t _v_len1 = _v_list2__1.get_len ();
78    uintptr_t _v_len2 = 1;
79    if ((_v_len1 < _v_len2))
80    {
81      RF_FUNC_ERROR (unexpected_fail);
82    }
83    uintptr_t _v_len__rest2 = (_v_len1 - _v_len2);
84    uintptr_t _v_len3 = _v_list1__1.get_len ();
85    uintptr_t _v_len4 = 1;
86    if ((_v_len3 < _v_len4))
87    {
88      RF_FUNC_ERROR (unexpected_fail);
89    }
90    uintptr_t _v_len__rest1 = (_v_len3 - _v_len4);
91    Expr _vt_first1 (_v_list1__1, 0, 1);
92    Expr _ve_rest1 (_v_list1__1, 1, _v_len__rest1);
93    Expr _vt_first2 (_v_list2__1, 0, 1);
94    Expr _ve_rest2 (_v_list2__1, 1, _v_len__rest2);
95    _v_list1__1 = _ve_rest1;
96    _v_list2__1 = _ve_rest2;
97    _ve_new_m_list = (_ve_new_m_list + (_vt_first1 + _vt_first2) ());
98  }
99_exit__iter1: {}
100RF_END
101
102RF_FUNC (Map, (RF_ARG _vs_Fname, _ve_Fargs, _ve_list;;), (RF_RES _v_res1;;))
103  Expr _ve_new_m_list (empty);
104  Expr _v_list__1 (_ve_list);
105  for ( ; ; )
106  {
107    {
108      if ((_v_list__1.get_len () != 0))
109      {
110        goto _iter1;
111      }
112      _v_res1 = _ve_new_m_list;
113      goto _exit__iter1;
114    }
115  _iter1: {}
116    uintptr_t _v_len1 = _v_list__1.get_len ();
117    uintptr_t _v_len2 = 1;
118    if ((_v_len1 < _v_len2))
119    {
120      RF_FUNC_ERROR (unexpected_fail);
121    }
122    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
123    Expr _vt_item (_v_list__1, 0, 1);
124    Expr _ve_rest (_v_list__1, 1, _v_len__rest);
125    Expr _v_Apply1;
126    if (!RF_CALL (Apply::Apply, (_vs_Fname, (_ve_Fargs + _vt_item)), _v_Apply1))
127    {
128      RF_FUNC_ERROR (unexpected_fail);
129    }
130    _ve_new_m_list = (_ve_new_m_list + _v_Apply1);
131    _v_list__1 = _ve_rest;
132  }
133_exit__iter1: {}
134RF_END
135
136RF_FUNC (Filter, (RF_ARG _vs_Fname, _ve_Fargs, _ve_list;;), (RF_RES _v_res1;;))
137  Expr _ve_new_m_list (empty);
138  Expr _v_list__1 (_ve_list);
139  for ( ; ; )
140  {
141    {
142      if ((_v_list__1.get_len () != 0))
143      {
144        goto _iter1;
145      }
146      _v_res1 = _ve_new_m_list;
147      goto _exit__iter1;
148    }
149  _iter1: {}
150    uintptr_t _v_len1 = _v_list__1.get_len ();
151    uintptr_t _v_len2 = 1;
152    if ((_v_len1 < _v_len2))
153    {
154      RF_FUNC_ERROR (unexpected_fail);
155    }
156    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
157    Expr _vt_item (_v_list__1, 0, 1);
158    Expr _ve_rest (_v_list__1, 1, _v_len__rest);
159    {
160      {
161        Expr _v_Apply1;
162        if (!RF_CALL (Apply::Apply, (_vs_Fname, (_ve_Fargs + _vt_item)), _v_Apply1))
163        {
164          goto _block2__branch1;
165        }
166        uintptr_t _v_len3 = _v_Apply1.get_len ();
167        uintptr_t _v_len4 = 0;
168        if ((_v_len3 < _v_len4))
169        {
170          goto _block2__branch1;
171        }
172        uintptr_t _v_len___e__e_tmp_m_Listrf_m_36_m_41 = (_v_len3 - _v_len4);
173        Expr _ve__e__e_tmp_m_Listrf_m_36_m_41 (_v_Apply1, 0, _v_len___e__e_tmp_m_Listrf_m_36_m_41);
174        _ve_new_m_list = (_ve_new_m_list + _vt_item);
175        _v_list__1 = _ve_rest;
176        goto _block2;
177      }
178    _block2__branch1: {}
179      _v_list__1 = _ve_rest;
180    }
181  _block2: {}
182  }
183_exit__iter1: {}
184RF_END
185
186RF_FUNC (Split, (RF_ARG _vs_Fname, _ve_Fargs, _ve_list;;), (RF_RES _v_res1, _v_res2;;))
187  Expr _ve_true_m_list (empty);
188  Expr _ve_false_m_list (empty);
189  Expr _v_list__1 (_ve_list);
190  for ( ; ; )
191  {
192    {
193      if ((_v_list__1.get_len () != 0))
194      {
195        goto _iter1;
196      }
197      _v_res1 = _ve_true_m_list;
198      _v_res2 = _ve_false_m_list;
199      goto _exit__iter1;
200    }
201  _iter1: {}
202    uintptr_t _v_len1 = _v_list__1.get_len ();
203    uintptr_t _v_len2 = 1;
204    if ((_v_len1 < _v_len2))
205    {
206      RF_FUNC_ERROR (unexpected_fail);
207    }
208    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
209    Expr _vt_item (_v_list__1, 0, 1);
210    Expr _ve_rest (_v_list__1, 1, _v_len__rest);
211    {
212      {
213        Expr _v_Apply1;
214        if (!RF_CALL (Apply::Apply, (_vs_Fname, (_ve_Fargs + _vt_item)), _v_Apply1))
215        {
216          goto _block2__branch1;
217        }
218        uintptr_t _v_len3 = _v_Apply1.get_len ();
219        uintptr_t _v_len4 = 0;
220        if ((_v_len3 < _v_len4))
221        {
222          goto _block2__branch1;
223        }
224        uintptr_t _v_len___e__e_tmp_m_Listrf_m_47_m_41 = (_v_len3 - _v_len4);
225        Expr _ve__e__e_tmp_m_Listrf_m_47_m_41 (_v_Apply1, 0, _v_len___e__e_tmp_m_Listrf_m_47_m_41);
226        _ve_true_m_list = (_ve_true_m_list + _vt_item);
227        _v_list__1 = _ve_rest;
228        goto _block2;
229      }
230    _block2__branch1: {}
231      _ve_false_m_list = (_ve_false_m_list + _vt_item);
232      _v_list__1 = _ve_rest;
233    }
234  _block2: {}
235  }
236_exit__iter1: {}
237RF_END
238
239RF_FUNC (Elem_q_, (RF_ARG _ve_list, _vt_item;;), RF_VOID)
240  if ((_ve_list.get_len () < 1))
241  {
242    RF_RETFAIL;
243  }
244  RF_lsplit (_ve_list, 0, _ve__e__e_tmp_m_Listrf_m_56_m_13, _v_lsplit__list);
245  for ( ; ; RF_iter(_ve_list)++)
246  {
247    {
248      if (!RF_iter(_ve_list))
249      {
250        RF_RETFAIL;
251      }
252      uintptr_t _v_len1 = _v_lsplit__list.get_len ();
253      uintptr_t _v_len2 = 1;
254      if ((_v_len1 < _v_len2))
255      {
256        RF_RETFAIL;
257      }
258      uintptr_t _v_len___e__e_tmp_m_Listrf_m_56_m_22 = (_v_len1 - _v_len2);
259      if (!_vt_item.term_eq (_v_lsplit__list, 0))
260      {
261        goto _continue1;
262      }
263      Expr _ve__e__e_tmp_m_Listrf_m_56_m_22 (_v_lsplit__list, 1, _v_len___e__e_tmp_m_Listrf_m_56_m_22);
264      goto _exit1;
265    }
266_continue1: {}
267  }
268_exit1: {}
269RF_END
270
271RF_FUNC (Get_m_Elem, (RF_ARG _vs_num, _ve_list;;), (RF_RES _v_res1;;))
272  if (!RF_CALL (Access::L, (_vs_num, _ve_list), _v_res1))
273  {
274    RF_FUNC_ERROR (unexpected_fail);
275  }
276RF_END
277
278RF_FUNC (Foldr, (RF_ARG _vs_Fname, _ve_Fargs, _ve_value, _ve_list;;), (RF_RES _v_res1;;))
279  Expr _v_value__1 (_ve_value);
280  Expr _v_list__1 (_ve_list);
281  for ( ; ; )
282  {
283    {
284      if ((_v_list__1.get_len () != 0))
285      {
286        goto _iter1;
287      }
288      _v_res1 = _v_value__1;
289      goto _exit__iter1;
290    }
291  _iter1: {}
292    uintptr_t _v_len1 = _v_list__1.get_len ();
293    uintptr_t _v_len2 = 1;
294    if ((_v_len1 < _v_len2))
295    {
296      RF_FUNC_ERROR (unexpected_fail);
297    }
298    uintptr_t _v_len__something = (_v_len1 - _v_len2);
299    Expr _ve_something (_v_list__1, 0, _v_len__something);
300    Expr _vt_last (_v_list__1, _v_len__something, 1);
301    if (!RF_CALL (Apply::Apply, (_vs_Fname, (_ve_Fargs + _vt_last + _v_value__1)), _v_value__1))
302    {
303      RF_FUNC_ERROR (unexpected_fail);
304    }
305    _v_list__1 = _ve_something;
306  }
307_exit__iter1: {}
308RF_END
309
310RF_FUNC (Foldr1, (RF_ARG _vs_Fname, _ve_Fargs, _ve_list;;), (RF_RES _v_res1;;))
311  {
312    {
313      uintptr_t _v_len1 = _ve_list.get_len ();
314      uintptr_t _v_len2 = 1;
315      if ((_v_len1 < _v_len2))
316      {
317        goto _block1__branch1;
318      }
319      uintptr_t _v_len__something = (_v_len1 - _v_len2);
320      Expr _ve_something (_ve_list, 0, _v_len__something);
321      Expr _vt_last (_ve_list, _v_len__something, 1);
322      RF_TAILCALL (Foldr, (_vs_Fname, _ve_Fargs, _vt_last, _ve_something), _v_res1);
323      goto _block1;
324    }
325  _block1__branch1: {}
326    _v_res1 = empty;
327  }
328_block1: {}
329RF_END
330
331RF_FUNC (Concat, (RF_ARG _ve_lists;;), (RF_RES _v_res1;;))
332  RF_TAILCALL (Map, (_c_0, empty, _ve_lists), _v_res1);
333RF_END
334
335RF_FUNC (Paren, (RF_ARG _ve_xpr;;), (RF_RES _v_res1;;))
336  RF_TAILCALL (Map, (_c_1, empty, _ve_xpr), _v_res1);
337RF_END
338
339RF_FUNC (Reverse, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
340  {
341    {
342      uintptr_t _v_len1 = _v_arg1.get_len ();
343      uintptr_t _v_len2 = 1;
344      if ((_v_len1 < _v_len2))
345      {
346        goto _block1__branch1;
347      }
348      uintptr_t _v_len__list = (_v_len1 - _v_len2);
349      Expr _vt_erm (_v_arg1, 0, 1);
350      Expr _ve_list (_v_arg1, 1, _v_len__list);
351      Expr _v_Reverse1;
352      RF_CALL (Reverse, _ve_list, _v_Reverse1);
353      _v_res1 = (_v_Reverse1 + _vt_erm);
354      goto _block1;
355    }
356  _block1__branch1: {}
357    if ((_v_arg1.get_len () != 0))
358    {
359      RF_FUNC_ERROR (unexpected_fail);
360    }
361    _v_res1 = empty;
362  }
363_block1: {}
364RF_END
365
366RF_FUNC (Intersperse, (RF_ARG _ve_sep, _ve_list;;), (RF_RES _v_res1;;))
367  Expr _ve_new_m_list (empty);
368  Expr _v_list__1 (_ve_list);
369  for ( ; ; )
370  {
371    {
372      if ((_v_list__1.get_len () != 0))
373      {
374        goto _iter1;
375      }
376      _v_res1 = _ve_new_m_list;
377      goto _exit__iter1;
378    }
379  _iter1: {}
380    {
381      {
382        uintptr_t _v_len1 = _v_list__1.get_len ();
383        uintptr_t _v_len2 = 1;
384        if ((_v_len1 < (_v_len2 + 1)))
385        {
386          goto _block1__branch1;
387        }
388        uintptr_t _v_len__2 = (_v_len1 - _v_len2);
389        Expr _vt_1 (_v_list__1, 0, 1);
390        Expr _vv_2 (_v_list__1, 1, _v_len__2);
391        _ve_new_m_list = (_ve_new_m_list + _vt_1 + _ve_sep);
392        _v_list__1 = _vv_2;
393        goto _block1;
394      }
395    _block1__branch1: {}
396      _ve_new_m_list = (_ve_new_m_list + _v_list__1);
397      _v_list__1 = empty;
398    }
399  _block1: {}
400  }
401_exit__iter1: {}
402RF_END
403
404RF_FUNC (Nub, (RF_ARG _ve_expr;;), (RF_RES _v_res1;;))
405  Expr _v_expr__1 (_ve_expr);
406  Expr _ve_selected (empty);
407  for ( ; ; )
408  {
409    {
410      if ((_v_expr__1.get_len () != 0))
411      {
412        goto _iter1;
413      }
414      _v_res1 = _ve_selected;
415      goto _exit__iter1;
416    }
417  _iter1: {}
418    uintptr_t _v_len1 = _v_expr__1.get_len ();
419    uintptr_t _v_len2 = 1;
420    if ((_v_len1 < _v_len2))
421    {
422      RF_FUNC_ERROR (unexpected_fail);
423    }
424    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
425    Expr _vt_erm (_v_expr__1, 0, 1);
426    Expr _ve_rest (_v_expr__1, 1, _v_len__rest);
427    {
428      {
429        if ((_ve_selected.get_len () < 1))
430        {
431          goto _block2__branch1;
432        }
433        RF_lsplit (_ve_selected, 0, _ve__e__e_tmp_m_Listrf_m_95_m_21, _v_lsplit__selected);
434        for ( ; ; RF_iter(_ve_selected)++)
435        {
436          {
437            if (!RF_iter(_ve_selected))
438            {
439              goto _block2__branch1;
440            }
441            uintptr_t _v_len3 = _v_lsplit__selected.get_len ();
442            uintptr_t _v_len4 = 1;
443            if ((_v_len3 < _v_len4))
444            {
445              goto _block2__branch1;
446            }
447            uintptr_t _v_len___e__e_tmp_m_Listrf_m_95_m_28 = (_v_len3 - _v_len4);
448            if (!_vt_erm.term_eq (_v_lsplit__selected, 0))
449            {
450              goto _continue1;
451            }
452            Expr _ve__e__e_tmp_m_Listrf_m_95_m_28 (_v_lsplit__selected, 1, _v_len___e__e_tmp_m_Listrf_m_95_m_28);
453            _v_expr__1 = _ve_rest;
454            goto _exit1;
455          }
456      _continue1: {}
457        }
458      _exit1: {}
459        goto _block2;
460      }
461    _block2__branch1: {}
462      _v_expr__1 = _ve_rest;
463      _ve_selected = (_ve_selected + _vt_erm);
464    }
465  _block2: {}
466  }
467_exit__iter1: {}
468RF_END
469
470RF_FUNC (Entries, (RF_ARG _ve_expr, _ve_source;;), (RF_RES _v_res1, _v_res2;;))
471  Expr _vs_num (_c_2);
472  Expr _v_source__1 (_ve_source);
473  Expr _ve_res (empty);
474  for ( ; ; )
475  {
476    {
477      if ((_v_source__1.get_len () != 0))
478      {
479        goto _iter1;
480      }
481      _v_res1 = _vs_num;
482      _v_res2 = _ve_res;
483      goto _exit__iter1;
484    }
485  _iter1: {}
486    {
487      {
488        if ((_v_source__1.get_len () < _ve_expr.get_len ()))
489        {
490          goto _block1__branch1;
491        }
492        RF_lsplit (_v_source__1, 0, _ve_1, _v_lsplit__source__1);
493        for ( ; ; RF_iter(_v_source__1)++)
494        {
495          {
496            if (!RF_iter(_v_source__1))
497            {
498              goto _block1__branch1;
499            }
500            uintptr_t _v_len1 = _v_lsplit__source__1.get_len ();
501            uintptr_t _v_len2 = _ve_expr.get_len ();
502            if ((_v_len1 < _v_len2))
503            {
504              goto _block1__branch1;
505            }
506            uintptr_t _v_len__2 = (_v_len1 - _v_len2);
507            if (!_ve_expr.eq (_v_lsplit__source__1, 0))
508            {
509              goto _continue1;
510            }
511            Expr _ve_2 (_v_lsplit__source__1, _ve_expr.get_len (), _v_len__2);
512            RF_CALL (Arithm::_p_, (_vs_num, _c_3), _vs_num);
513            _v_source__1 = _ve_2;
514            _ve_res = (_ve_res + _ve_1);
515            goto _exit1;
516          }
517      _continue1: {}
518        }
519      _exit1: {}
520        goto _block1;
521      }
522    _block1__branch1: {}
523      _ve_res = (_ve_res + _v_source__1);
524      _v_source__1 = empty;
525    }
526  _block1: {}
527  }
528_exit__iter1: {}
529RF_END
530
531RF_FUNC (Or, (RF_ARG _ve_list1, _ve_list2;;), (RF_RES _v_res1;;))
532  Expr _v_list1__1 (_ve_list1);
533  Expr _v_list2__1 (_ve_list2);
534  for ( ; ; )
535  {
536    {
537      if ((_v_list2__1.get_len () != 0))
538      {
539        goto _iter1;
540      }
541      _v_res1 = _v_list1__1;
542      goto _exit__iter1;
543    }
544  _iter1: {}
545    uintptr_t _v_len1 = _v_list2__1.get_len ();
546    uintptr_t _v_len2 = 1;
547    if ((_v_len1 < _v_len2))
548    {
549      RF_FUNC_ERROR (unexpected_fail);
550    }
551    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
552    Expr _vt_erm (_v_list2__1, 0, 1);
553    Expr _ve_rest (_v_list2__1, 1, _v_len__rest);
554    {
555      {
556        if ((_v_list1__1.get_len () < 1))
557        {
558          goto _block2__branch1;
559        }
560        RF_lsplit (_v_list1__1, 0, _ve__e__e_tmp_m_Listrf_m_120_m_20, _v_lsplit__list1__1);
561        for ( ; ; RF_iter(_v_list1__1)++)
562        {
563          {
564            if (!RF_iter(_v_list1__1))
565            {
566              goto _block2__branch1;
567            }
568            uintptr_t _v_len3 = _v_lsplit__list1__1.get_len ();
569            uintptr_t _v_len4 = 1;
570            if ((_v_len3 < _v_len4))
571            {
572              goto _block2__branch1;
573            }
574            uintptr_t _v_len___e__e_tmp_m_Listrf_m_120_m_27 = (_v_len3 - _v_len4);
575            if (!_vt_erm.term_eq (_v_lsplit__list1__1, 0))
576            {
577              goto _continue1;
578            }
579            Expr _ve__e__e_tmp_m_Listrf_m_120_m_27 (_v_lsplit__list1__1, 1, _v_len___e__e_tmp_m_Listrf_m_120_m_27);
580            _v_list2__1 = _ve_rest;
581            goto _exit1;
582          }
583      _continue1: {}
584        }
585      _exit1: {}
586        goto _block2;
587      }
588    _block2__branch1: {}
589      _v_list1__1 = (_v_list1__1 + _vt_erm);
590      _v_list2__1 = _ve_rest;
591    }
592  _block2: {}
593  }
594_exit__iter1: {}
595RF_END
596
597RF_FUNC (And, (RF_ARG _ve_list1, _ve_list2;;), (RF_RES _v_res1;;))
598  Expr _v_list1__1 (_ve_list1);
599  Expr _ve_and (empty);
600  for ( ; ; )
601  {
602    {
603      if ((_v_list1__1.get_len () != 0))
604      {
605        goto _iter1;
606      }
607      _v_res1 = _ve_and;
608      goto _exit__iter1;
609    }
610  _iter1: {}
611    uintptr_t _v_len1 = _v_list1__1.get_len ();
612    uintptr_t _v_len2 = 1;
613    if ((_v_len1 < _v_len2))
614    {
615      RF_FUNC_ERROR (unexpected_fail);
616    }
617    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
618    Expr _vt_erm (_v_list1__1, 0, 1);
619    Expr _ve_rest (_v_list1__1, 1, _v_len__rest);
620    {
621      {
622        if ((_ve_list2.get_len () < 1))
623        {
624          goto _block2__branch1;
625        }
626        RF_lsplit (_ve_list2, 0, _ve__e__e_tmp_m_Listrf_m_134_m_20, _v_lsplit__list2);
627        for ( ; ; RF_iter(_ve_list2)++)
628        {
629          {
630            if (!RF_iter(_ve_list2))
631            {
632              goto _block2__branch1;
633            }
634            uintptr_t _v_len3 = _v_lsplit__list2.get_len ();
635            uintptr_t _v_len4 = 1;
636            if ((_v_len3 < _v_len4))
637            {
638              goto _block2__branch1;
639            }
640            uintptr_t _v_len___e__e_tmp_m_Listrf_m_134_m_27 = (_v_len3 - _v_len4);
641            if (!_vt_erm.term_eq (_v_lsplit__list2, 0))
642            {
643              goto _continue1;
644            }
645            Expr _ve__e__e_tmp_m_Listrf_m_134_m_27 (_v_lsplit__list2, 1, _v_len___e__e_tmp_m_Listrf_m_134_m_27);
646            _v_list1__1 = _ve_rest;
647            _ve_and = (_ve_and + _vt_erm);
648            goto _exit1;
649          }
650      _continue1: {}
651        }
652      _exit1: {}
653        goto _block2;
654      }
655    _block2__branch1: {}
656      _v_list1__1 = _ve_rest;
657    }
658  _block2: {}
659  }
660_exit__iter1: {}
661RF_END
662
663RF_FUNC (Sub, (RF_ARG _ve_list1, _ve_list2;;), (RF_RES _v_res1;;))
664  Expr _v_list1__1 (_ve_list1);
665  Expr _ve_not (empty);
666  for ( ; ; )
667  {
668    {
669      if ((_v_list1__1.get_len () != 0))
670      {
671        goto _iter1;
672      }
673      _v_res1 = _ve_not;
674      goto _exit__iter1;
675    }
676  _iter1: {}
677    uintptr_t _v_len1 = _v_list1__1.get_len ();
678    uintptr_t _v_len2 = 1;
679    if ((_v_len1 < _v_len2))
680    {
681      RF_FUNC_ERROR (unexpected_fail);
682    }
683    uintptr_t _v_len__rest = (_v_len1 - _v_len2);
684    Expr _vt_erm (_v_list1__1, 0, 1);
685    Expr _ve_rest (_v_list1__1, 1, _v_len__rest);
686    {
687      {
688        if ((_ve_list2.get_len () < 1))
689        {
690          goto _block2__branch1;
691        }
692        RF_lsplit (_ve_list2, 0, _ve__e__e_tmp_m_Listrf_m_148_m_20, _v_lsplit__list2);
693        for ( ; ; RF_iter(_ve_list2)++)
694        {
695          {
696            if (!RF_iter(_ve_list2))
697            {
698              goto _block2__branch1;
699            }
700            uintptr_t _v_len3 = _v_lsplit__list2.get_len ();
701            uintptr_t _v_len4 = 1;
702            if ((_v_len3 < _v_len4))
703            {
704              goto _block2__branch1;
705            }
706            uintptr_t _v_len___e__e_tmp_m_Listrf_m_148_m_27 = (_v_len3 - _v_len4);
707            if (!_vt_erm.term_eq (_v_lsplit__list2, 0))
708            {
709              goto _continue1;
710            }
711            Expr _ve__e__e_tmp_m_Listrf_m_148_m_27 (_v_lsplit__list2, 1, _v_len___e__e_tmp_m_Listrf_m_148_m_27);
712            _v_list1__1 = _ve_rest;
713            goto _exit1;
714          }
715      _continue1: {}
716        }
717      _exit1: {}
718        goto _block2;
719      }
720    _block2__branch1: {}
721      _v_list1__1 = _ve_rest;
722      _ve_not = (_ve_not + _vt_erm);
723    }
724  _block2: {}
725  }
726_exit__iter1: {}
727RF_END
728
729RF_FUNC (Paren_m_Term__0, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
730  if ((_v_arg1.get_len () != 1))
731  {
732    RF_ERROR (_c_4);
733  }
734  Expr _v_stub1 (_v_arg1, 0, 1);
735  Expr _v_Paren_m_Term1;
736  RF_CALL (Paren_m_Term, _v_stub1, _v_Paren_m_Term1);
737  _v_res1 = _v_Paren_m_Term1 ();
738RF_END
739
740RF_FUNC (Deparen_m_Term__0, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
741  if ((_v_arg1.get_len () != 1))
742  {
743    RF_ERROR (_c_4);
744  }
745  Expr _v_stub1 (_v_arg1, 0, 1);
746  RF_TAILCALL (Deparen_m_Term, _v_stub1, _v_res1);
747RF_END
748
749}
750
751namespace List
752{
753
754static void init_ ()
755{
756  _c_0 = Expr::create_sym<Func> (Deparen_m_Term__0);
757  _c_1 = Expr::create_sym<Func> (Paren_m_Term__0);
758  _c_2 = Expr::create<Integer>("0");
759  _c_3 = Expr::create<Integer>("1");
760  _c_4 = Expr::create<Word>("Apply") + Expr::create<Word>("Apply") + Expr::create<Word>("Unexpected fail");
761}
762
763static AtStart init_registrator_ (&init_);
764
765}
766
767}
Note: See TracBrowser for help on using the repository browser.