USING: assocs combinators.short-circuit formatting kernel math math.parser regexp sequences sets qw unicode ; IN: rosetta-code.iban number>string ] { } map-as concat string>number 97 mod 1 = ; PRIVATE> : valid-iban? ( str -- ? ) " " without { [ valid-chars? ] [ valid-length? ] [ valid-checksum? ] } 1&& ; : iban-demo ( -- ) "GB82 WEST 1234 5698 7654 32" "GB82 TEST 1234 5698 7654 32" [ dup valid-iban? "may be a valid" "is an invalid" ? "%s %s IBAN\n" printf ] bi@ ; MAIN: iban-demo