如何配置PureScript REPL使其输出记录类型名称而非字面量?
解决PureScript REPL显示字面量而非类型名称的问题
嘿,这个问题我跟着《PureScript By Example》练习的时候也碰到过!确实是REPL的默认行为导致的差异,不需要复杂配置,调整个小参数就能和书中的效果对齐。
为什么会有这个差异?
PureScript REPL默认会展开显示值的底层结构,对于像Entry这种记录类型的别名,它只会打印原始的记录字面量,不会主动关联显示类型别名的名称。而书中的示例是提前配置了REPL来显示类型名称的,所以看起来不一样。
两种快速解决方法
方法1:启动REPL时直接设置参数
启动REPL的时候,加上--repl-options '{"printTypeNames": true}'参数,比如:
spago repl --repl-options '{"printTypeNames": true}'
这样启动的REPL会自动显示类型别名的名称。
方法2:在运行中的REPL里临时设置
如果已经打开了REPL不想重新启动,直接输入下面的命令:
:set printTypeNames true
回车之后再创建Entry类型的值,就能看到REPL输出Entry { id: ..., title: ... }的格式,和书中的效果完全一致。
额外说明
如果你的Entry是定义为数据构造器(比如data Entry = Entry Int String),默认REPL就会显示构造函数名称,但对于记录类型的类型别名,必须开启上面的设置才能显示类型名称。这个设置在PureScript 0.15及以上版本都有效,要是你用的是更旧版本,可能需要升级或查看对应版本文档调整参数,但主流版本这个方法都适用。
内容的提问来源于stack exchange,提问作者Jonah
相关产品推荐
相关产品推荐

