Sml 记录和元组之间的转换?

Sml 记录和元组之间的转换?,sml,Sml,既然tuple只是SML中的record,我尝试了: 上面的代码我希望这个记录可以接受元组,但是它报告了一个错误 所以,并没有从元组到记录以及从记录到元组的隐式转换(虽然我并没有在这里发布,实际上我已经在本地进行了尝试) 我的问题是为什么SML不提供这种转换?(因为这些转换在c++中非常频繁)元组是成员名为1到n的记录。也就是说,三元素元组(a,b,c)实际上是一个记录{1=a,2=b,3=c}。所以元组和记录之间不需要隐式转换,因为它们已经是相同的东西了 现在,您定义的函数将获取一条包含成员

既然
tuple
只是SML中的
record
,我尝试了:

上面的代码我希望这个记录可以接受元组,但是它报告了一个错误

所以,并没有从元组到记录以及从记录到元组的隐式转换(虽然我并没有在这里发布,实际上我已经在本地进行了尝试)


我的问题是为什么SML不提供这种转换?(因为这些转换在c++中非常频繁)

元组是成员名为1到n的记录。也就是说,三元素元组
(a,b,c)
实际上是一个记录
{1=a,2=b,3=c}
。所以元组和记录之间不需要隐式转换,因为它们已经是相同的东西了

现在,您定义的函数将获取一条包含成员
x
y
z
的记录,并将一条包含成员
1
2
3
的记录传递给它。这不管用。要使其工作,需要在具有不同成员名称的记录之间进行隐式转换,这似乎是一个非常糟糕的主意

(因为这些转换在c++中非常频繁)

<>在不同成员(甚至相同成员)的无关结构或类之间,C++中没有隐式转换。要做到这一点,您需要一个
reinterpret\u cast
(或者在地址上强制转换一个C风格的指针),这既不常见也不是一个好主意(除了POD类型之外,任何东西都不能使用)