<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/env python

def make_char_parser(c):
    def parse(s, i):
        #return False if i &gt; len(s) else s[i] == c        
        return -1 if i &gt;= len(s) else i+1 if s[i] == c else -1
    return parse

pr = make_char_parser('r')
po = make_char_parser('o')

s = 'rorort'

# call pr(s,0), po(s,1)

# i = 0
# i = pr(s,i)
# if i != -1:
#     i = po(s,i)
#     if i != -1:
#         print "success!"

def make_seq(p1, p2):    
    def parse(s,i):
        i = p1(s,i)
        if i == -1: return -1
        else: return p2(s,i)
    return parse

pro = make_seq(pr,po)
print pro(s,0)

proro = make_seq(pro,pro)
print proro(s,0)

</pre></body></html>