1
最近、メニューを使用するプログラムを作成するタスクが与えられました。しかし、私はどのようにウィンドウを作成し、特定のキーを使用して相互作用することができるテキストを表示させるかわからない、 '入力'キーを言う。誰もこれを行う方法のヒントはありますか?スキームでインタラクティブメニューを作成する方法
最近、メニューを使用するプログラムを作成するタスクが与えられました。しかし、私はどのようにウィンドウを作成し、特定のキーを使用して相互作用することができるテキストを表示させるかわからない、 '入力'キーを言う。誰もこれを行う方法のヒントはありますか?スキームでインタラクティブメニューを作成する方法
スキームレポートにはGUIがサポートされていないため、唯一の移植可能なものはCLIインターフェイスです。これは、これらの部分だけを持つ非常に単純なプログラムです。
#!r6rs
(import (rnrs))
(define *stdin* (current-input-port))
(define (readline)
(get-line *stdin*))
;;; displays a textual menu
(define (menu)
(display "Menu\n1. read input\n2. print data\n3. empty input\n"))
;; read until we got the value between 1 and 3 from user
(define (read-command)
(display "Enter choice [1-3] >")
(let* ((in (readline))
(n (string->number in)))
(cond ((<= 1 n 3) n)
(else
(display "Invalid choice \"")
(display in)
(display "\"\n")
(read-command)))))
(define (driver data)
(menu)
(let ((choice (read-command)))
(cond ((= choice 1) (display "Enter text >")
(driver (cons (readline) data)))
((= choice 2) (display "Data:\n")
(display data)
(newline)
(driver data))
(else (display "Emptied\n")
(driver '())))))
(driver '())
もちろん、個々の実装にはGUIがサポートされています。例えば。ラケットには、デスクトップアプリケーションを作成する方法があります。ここでは、メニューをクリックするボタンにすることができます。