Я написал следующий код шифрования строки. Но я хочу иметь возможность брать ключ шифрования с клавиатуры, используя (чтение) вместо использования жестко закодированного значения. Но я не могу этого сделать, потому что карта принимает список в качестве аргумента.
#lang racket
(define character-encryption
(lambda (ch)
(if (char-alphabetic? ch)
(character-rotation ch 3)
ch))) ; non-letter will not be encrypted.
(define character-rotation
(lambda (ch num)
(integer->char (+ (char->integer ch) num)))) ; key=3
(define string-encryption
(lambda (str)
(list->string (map character-encryption (string->list str)))))
ОБНОВИТЬ
> (string-encryption (read))
"foo bar" ; <- entered
"irr edu" ; output
ОБНОВИТЬ
#lang racket
(define character-encryption
(lambda (key)
(lambda (ch)
(if (char-alphabetic? ch)
(character-rotation ch key)
ch)))) ; non-letter will not be encrypted.
(define character-rotation
(lambda (ch num)
(integer->char (+ (char->integer ch) num)))) ; key=3 (I want to read this number)
(define string-encryption
(lambda (key str)
(list->string (map (character-encryption key) (string->list str)))))