2
我已经定义了一些复杂的数据类型,例如:A型“信息”,以获得从功能的更多结果
type drawer =
{ ...
box: boxes list }
type table =
{ ...
drawers: drawer list }
type room =
{ ...
tables: table list }
我想定义的类似的目的,但不同类型的参数一些功能,为例:
val compare_size_rooms: room -> room -> bool (* true: bigger, false: smaller *)
val compare_size_tables: table -> table -> bool
val compare_size_boxes: box -> box -> bool
的一件事是,有时,由于结构不同,2房/表/盒可能是没有可比性的,因此,我希望比较可以给我一些额外的信息,除了刚才真的还是假的。
我的问题是,无论是定义一个类型info
的常用方法:
type info =
| Incomparable_Tables_One_foldable_Another_non_foldable
| Incomparable_Tables_One_rectangle_Another_triangle
| Incomparable_Boxes_One_in_paper_Another_in_metal
| ...
我做出如下功能:
val compare_size_rooms: room -> room -> bool * info (* true: bigger, false: smaller *)
val compare_size_tables: table -> table -> bool * info
val compare_size_boxes: box -> box -> bool * info
因此这些功能,我分析2值,如果它们具有可比性,那么bool
返回更大或更小,否则,info
返回有用的分析信息。
这个结构看起来不是很常见,有谁能告诉我是否平常,或者如果有更好的方法可以实现同样的事情?
非常感谢您
感谢您的评论,为什么我无法在线或Ocaml手册中找到任何有关电池库或BatPervasives的文档? – SoftTimur
'好'和'坏'是'BatPervasives'中的构造函数? – SoftTimur
因为很难在网上找到:-) http://thelema.github.com/batteries-included/hdoc/是一个很好的开始。 –