我想知道如何打印列表定义的名称,例如:
(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"。 现在我想制作一个打印如下内容的函数: "小巴运输:约翰,丽莎和艾迪"。
答案 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步。
现在,您可以编写一个接受车辆的函数并返回一个字符串,例如您描述的字符串。