include_c "string.h"; use "sequence_queries.g"; use "iterator_models.g"; use "slist.g"; fun main() -> int@ { let str = "yabadabado"; let l = @slist(); let i = strlen(str) - 1; while (i >= 0) { push_front(str[i], l); --i; } let seq = begin(l); let seq_end = end(l); /* ba */ let subseq = begin(l); advance(subseq, 2); let subseq_end = begin(l); advance(subseq_end, 4); let i = find_last_subsequence(seq, seq_end, subseq, subseq_end); let d = distance(seq, i); if (not distance(seq, i) == 6) return -1; let i = find_last_subsequence(seq, seq_end, subseq, subseq_end, fun (char a, char b): a == b); if (not distance(seq, i) == 6) return -1; return 0; }