Полный новичок в Scheme здесь.
Я застрял на проблеме со схемой на какое-то время. Я не понимаю, как это правильно закодировать. Я посмотрел везде на этом сайте и на других, и я просто не могу заставить это работать.
проблема: определить функцию Square, которая возводит в квадрат свои параметры. Если параметр не является числом, вывести сообщение invalid_input.
Вот что я пробовал:
(define (square x) (cond
((number? x) (* x x))
(else (display "invalid_input\n"))
)
)
Я также пробовал это:
(define (square x) (cond
((number? x) (* x x))
((not (number? x)) (display "invalid_input\n"))
)
)
И это:
(define (square x) (if
(number? x) (* x x) (display "invalid_input\n")
)
)
Ни один из них не сработал, когда я вызываю квадрат вот так (квадрат h). Я продолжаю получать эту ошибку в Linux
scheme@(guile-user)> (square h)
;;; <stdin>:44:0: warning: possibly unbound variable `h'
<unnamed port>:44:0: In procedure #<procedure 7fcc7d0a0b60 at <current input>:44:0 ()>:
<unnamed port>:44:0: In procedure module-lookup: Unbound variable: h
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
Разве он не должен печатать invalid_input, поскольку «h» не является числом? помогите мне здесь, пожалуйста. Спасибо