我定义一个函数
(define 1-9 (list->set (range 1 10)))
我想看看1-9
是否真的是一个集合。如何获得1-9
的类型?
我尝试通过Google球拍检查类型,但是找不到任何有用的信息。
答案 0 :(得分:2)
#lang racket
是动态键入的。实际上,这意味着您通常不会(应该)关心某个值的“ The”“ Type”。
相反,(如Alex所指出的),您可以为“谓词”函数(如list?
)赋予一个值。如果谓词返回true,那么您可以继续进行操作,并使用值list
-y-将值提供给期望list
的函数。
这比具有(typeof value)
之类的返回诸如List
之类的魔术符号的东西有用和可靠得多。毕竟,您关心的是可以使用该值执行。谓词告诉您。谓词允许可以多种方式使用的值(例如,既作为列表又作为集合)。
p.s。这类似于为什么版本号(如语义版本控制)如此愚蠢的原因。给定一些已安装的库,您真正关心的是它是否提供某些功能和行为。您想问一下实际安装的库,您是否提供函数X -不要使用一些幻数和外界信息来猜测。
p.p.s。如果要序列化值(将它们写入并读取到文件中)怎么办?您确实需要选择一种表示每个值的方法。在球拍中,一种方法是使用原始值的印刷表示形式,以及将类似预制结构的形式用于其他形式-然后使用write
和read
。还有racket/serialize
。在任何情况下,序列化值都是相对罕见的事情。