如何在F#中保留Die类型的引用不变式(确保CurrentFace属于Faces)?
如何确保F#中Die类型的CurrentFace必然属于Faces列表?
给定如下F#类型:
type Die<'face> = { Faces: 'face list; CurrentFace: 'face; }
如何确保CurrentFace必然是Faces列表中的值这一不变式?
引用方式尝试
我曾考虑用Faces列表的引用方式来实现,例如:
第一种方案:
type Die<'face> = { Faces: 'face list; CurrentFaceIndex: int; }
第二种方案:
type DieFaceId = Value of Guid type DieFace<'value> = { Id: DieFaceId; Value: 'value; } type Die<'faceValue> = { Faces: DieFace<'faceValue> list; CurrentFaceId: DieFaceId; }
但我找不到办法维护“当前面的引用必须匹配Faces列表中的某个面”这一不变式。
内容的提问来源于stack exchange,提问作者Tyler Kasper
相关产品推荐
相关产品推荐

