Generics 通过使用新成员扩展现有记录,以内联方式创建新记录类型

Generics 通过使用新成员扩展现有记录,以内联方式创建新记录类型,generics,types,f#,Generics,Types,F#,询问并试用后,我有以下通用实体类型: type Entity<'a> = { Id : Guid Data : 'a } 我希望实现的是返回一个记录类型,这样如果'a是例如{foo:string;bar:int},那么将{Id=someGuid;Data={foo:baz;bar:42}返回{Id=someGuid;foo=“baz”;bar=42}(或等效值) 有没有办法做到这一点,或者我是在试图使类型系统过于动态?我认为第一个示例可以使用inline和magic

询问并试用后,我有以下通用实体类型:

type Entity<'a> = {
    Id : Guid
    Data : 'a
}
我希望实现的是返回一个记录类型,这样如果
'a
是例如
{foo:string;bar:int}
,那么
将{Id=someGuid;Data={foo:baz;bar:42}
返回
{Id=someGuid;foo=“baz”;bar=42}
(或等效值)


有没有办法做到这一点,或者我是在试图使类型系统过于动态?

我认为第一个示例可以使用inline和magic完成。第二个对象表达式很接近,
{Id=someGuid;foo=“baz”;bar=42}
有什么类型?@MarkSeemann:我意识到没有为此定义类型,这可能就是它不起作用的原因。我想完成的类似于为
{Id=someGuid;foo=“baz”;bar=42}
-定义匿名类型,并为其他实体类型定义类似的匿名类型。@Gustavo F#确实有匿名类型;它们被称为元组;)你可以投赞成票,目前正在审查中。
let flatten<'a> (v : Entity<'a>) = { v.Data with Id = v.Id }