; sales commissions
( define ( sum xs) ( apply + xs) )
( define ( commission)
( let loop ( ( commissions ( list ) ) )
( display "Enter sales amount or CTRL-D: " )
( let ( ( sale ( read ) ) )
( if ( eof-object? sale)
( begin ( newline )
( values ( list-> vector ( reverse commissions) )
( sum commissions) ) )
( let ( ( commission ( + ( * sale 0.1 ) 200 ) ) )
( display " Commission is " )
( display commission) ( newline )
( loop ( cons commission commissions) ) ) ) ) ) )
( commission)
OyBzYWxlcyBjb21taXNzaW9ucwoKKGRlZmluZSAoc3VtIHhzKSAoYXBwbHkgKyB4cykpCgooZGVmaW5lIChjb21taXNzaW9uKQogIChsZXQgbG9vcCAoKGNvbW1pc3Npb25zIChsaXN0KSkpCiAgICAoZGlzcGxheSAiRW50ZXIgc2FsZXMgYW1vdW50IG9yIENUUkwtRDogIikKICAgIChsZXQgKChzYWxlIChyZWFkKSkpCiAgICAgIChpZiAoZW9mLW9iamVjdD8gc2FsZSkKICAgICAgICAgIChiZWdpbiAobmV3bGluZSkKICAgICAgICAgICAgICAgICAodmFsdWVzIChsaXN0LT52ZWN0b3IgKHJldmVyc2UgY29tbWlzc2lvbnMpKQogICAgICAgICAgICAgICAgICAgICAgICAgKHN1bSBjb21taXNzaW9ucykpKQogICAgICAgICAgKGxldCAoKGNvbW1pc3Npb24gKCsgKCogc2FsZSAwLjEpIDIwMCkpKQogICAgICAgICAgICAoZGlzcGxheSAiICAgIENvbW1pc3Npb24gaXMgIikKICAgICAgICAgICAgKGRpc3BsYXkgY29tbWlzc2lvbikgKG5ld2xpbmUpCiAgICAgICAgICAgIChsb29wIChjb25zIGNvbW1pc3Npb24gY29tbWlzc2lvbnMpKSkpKSkpCgooY29tbWlzc2lvbik=