Определение функции схемы - PullRequest
0 голосов
/ 19 января 2019

В свободное время я читал «Маленький интриган» и пытался поэкспериментировать с синтаксисом, и я столкнулся с проблемой синтаксиса, которую я не могу обернуть. У меня есть скрипт, который выглядит так:

;;;; 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 на точный файл

...