ABC words: Difference between revisions
Content added Content deleted
Line 2,364: | Line 2,364: | ||
return None is not bind( |
return None is not bind( |
||
bind( |
bind( |
||
residue(' |
residue('bc', 'a')(s) |
||
)( |
)( |
||
residue(' |
residue('c', 'b') |
||
) |
) |
||
)( |
)( |
||
Line 2,373: | Line 2,373: | ||
# residue Char |
# residue (String, Char) -> String -> Maybe String |
||
def residue(c): |
def residue(cs, c): |
||
'''Any characters remaining in s after c, unless |
'''Any characters remaining in s after c, unless |
||
c is preceded by excluded characters. |
c is preceded by excluded characters. |
||
''' |
''' |
||
def |
def go(s): |
||
if s: |
|||
x = s[0] |
|||
return None if x in cs else ( |
|||
s[1:] if c == x else go(s[1:]) |
|||
) |
|||
else: |
|||
return None |
|||
return None |
|||
return go |
|||
return excluding |
|||