如何打印列表定义的名称? DR。球拍

时间:2015-03-25 16:35:37

标签: racket

我想知道如何打印列表定义的名称,例如:

(define Mylist (cons "ab" (cons "cd" (cons "ef" empty))))

然后致电(string-append "Mylist" "the rest.. bla bla")。 不是(string-append "abcdef" "the rest.. bla bla")

例如:

我的车型小巴与乘客" john"," lisa"," edie"。 现在我想制作一个打印如下内容的函数: "小巴运输:约翰,丽莎和艾迪"。

1 个答案:

答案 0 :(得分:1)

听起来我想要获取列表的名称。那就是:给定列表,做一些获取列表名称的东西。是吗?

如果是这样,那么你会感到失望的是,在Racket(和其他编程语言)中,你不能这样做。要了解原因,您需要知道列表是一个值,比如说数字3.所以询问“这个列表的名称是什么”或多或少与说“哪些变量当前具有值3”相同“?你可以想象一种语言可以用这种方式工作,但这不是主流编程语言支持的东西。

编辑:是的,您的评论澄清了这就是您的想法。但是,不要告诉你不能这样做,而是谈谈你可以做什么。

具体来说,您可能需要一段代表物品名称的数据,乘客列表。

在HtDP(http://www.htdp.org/)的说法中,让我们写一个数据定义

#lang racket

;; a vehicle is (make-vehicle string list-of-strings)
(define-struct vehicle (kind passengers))

;; examples of vehicles
(define ex1 (make-vehicle "Minibus" (list "John" "Lisa" "Edie")))
(define ex2 (make-vehicle "Microbus" (list)))

;; example of getting the name from ex1:
(vehicle-kind ex1) ;; evaluates to "Minibus"

;; example of getting the list of passengers from ex1:
(vehicle-passengers ex1) ;; evaluates to (list "John" "Lisa" "Edie")

这是来自HtDP的设计配方的第1步。

现在,您可以编写一个接受车辆的函数并返回一个字符串,例如您描述的字符串。