В свободное время я читал «Маленький интриган» и пытался поэкспериментировать с синтаксисом, и я столкнулся с проблемой синтаксиса, которую я не могу обернуть. У меня есть скрипт, который выглядит так:
;;;; Chapter 2 examples
;;; Note: run this file with 'mit-scheme --quiet < c2.scm'
;; You can define variables using the "define" function
(define my-favorite-number 13)
;; You can define strings using double-quotes
(define my-favorite-color "green")
;; you define functions with lambdas. Functions auto return their last line
(define my-favorites
(lambda (color number)
(string-append "My favorite color is " color " and my favorite number is " number)))
; display will print
(display
(my-favorites my-favorite-color (number->string my-favorite-number)))
; and newline prints a newline
(newline)
Это отлично работает при запуске.
Под этим у меня есть немного больше:
(define greet
(lambda (name)
(string-append "Hello, " name)))
(display (greet "World"))
При запуске этого файла, я не могу получить "Hello, World" для печати. Первый дисплей работает прекрасно, но второй ничего не делает, и я не могу объяснить, почему. Сначала я подумал, что это может быть как-то связано с тем, как схема работает в интерактивной среде нормально, поэтому я удалил первый блок кода, но все же ничего не происходит.
Если я загружаю файл в интерактивном сеансе, функция «приветствовать» работает отлично, поэтому я думаю, что это должно быть что-то странное в функции отображения.
Может кто-нибудь объяснить, почему мой первый дисплей работает, а мой второй нет?
Вот ссылка github на точный файл