如何检查球拍的类型?

时间:2018-11-14 01:57:32

标签: types racket

我定义一个函数

(define 1-9 (list->set (range 1 10)))

我想看看1-9是否真的是一个集合。如何获得1-9的类型?

我尝试通过Google球拍检查类型,但是找不到任何有用的信息。

1 个答案:

答案 0 :(得分:2)

#lang racket是动态键入的。实际上,这意味着您通常不会(应该)关心某个值的“ The”“ Type”。

相反,(如Alex所指出的),您可以为“谓词”函数(如list?)赋予一个值。如果谓词返回true,那么您可以继续进行操作,并使用值list-y-将值提供给期望list的函数。

这比具有(typeof value)之类的返回诸如List之类的魔术符号的东西有用和可靠得多。毕竟,您关心的是可以使用该值执行。谓词告诉您。谓词允许可以多种方式使用的值(例如,既作为列表又作为集合)。


p.s。这类似于为什么版本号(如语义版本控制)如此愚蠢的原因。给定一些已安装的库,您真正关心的是它是否提供某些功能和行为。您想问一下实际安装的库,您是否提供函数X -不要使用一些幻数和外界信息来猜测。


p.p.s。如果要序列化值(将它们写入并读取到文件中)怎么办?您确实需要选择一种表示每个值的方法。在球拍中,一种方法是使用原始值的印刷表示形式,以及将类似预制结构的形式用于其他形式-然后使用writeread。还有racket/serialize。在任何情况下,序列化值都是相对罕见的事情。