在Clojure中重构时的结构正确性

lob*_*ism 7 clojure

如果我的项目正在使用带有形状的"人物"地图{:firstName :lastName :address},并且我想将该形状更改为{:name {:firstName :lastName} :address},我该怎么做才能确保我在使用这些对象的地方做出相应的更改?

在Java中,它很简单,因为我仍然有person.firstName会发出编译错误.在Clojure中,我可能甚至没有得到运行时错误,只是将错误数据保存到服务器.我认为不可能保证正确性,但除了细齿梳之外还有什么?

noa*_*hlz 6

Clojure具有提供数据定义和验证的库.例如,您可以使用https://github.com/Prismatic/schema

关于编译时与运行时错误的难度......好吧,这个问题并不是Clojure特有的.引用John Carmack的话:"lisp的挑战是让你的程序运行,Haskell的挑战是让它编译."