loop now takes a required value and passes the returned non-false value into the function
cons pattern "xy"::xs
loop returns the last argument, not false