21 lines
488 B
Text
21 lines
488 B
Text
@(deffilter incdig ("0" "1") ("1" "2") ("2" "3") ("3" "4") ("4" "5")
|
|
("5" "6") ("6" "7") ("7" "8") ("8" "9"))
|
|
@(define increment (num out))
|
|
@ (local prefix dig junk)
|
|
@ (next :string num)
|
|
@ (cases)
|
|
9
|
|
@ (bind out "10")
|
|
@ (or)
|
|
@*{prefix}@{dig /[0-8]/}
|
|
@ (bind out `@prefix@{dig :filter incdig}`)
|
|
@ (or)
|
|
@*{prefix}9
|
|
@ (bind out `@{prefix :filter (:fun increment)}0`)
|
|
@ (or)
|
|
@junk
|
|
@ (throw error `bad input: @junk`)
|
|
@ (end)
|
|
@(end)
|
|
@in
|
|
@(increment in out)
|