Functional programming 如何转换数据类型?

Functional programming 如何转换数据类型?,functional-programming,sml,smlnj,ml,Functional Programming,Sml,Smlnj,Ml,我为多重列表定义了一种数据类型: 数据类型intnest=INT/INT |内部列表列表; 现在我正在尝试编写一个函数,它可以将这个类型转换为main类型 例如: [INT 1,INT 2,LIST[INT 6,INT 8]=>[1,2,6,8]] 我该怎么做? 提前感谢您提供的有关的任何帮助,您不能 正如我试图解释的:在SML中不可能有这样的值 在你的翻译机上试试看 - val _ = [1,2, [6,8]]; stdIn:28.9-28.21 Error: operator and

我为多重列表定义了一种数据类型:

数据类型intnest=INT/INT
|内部列表列表;
现在我正在尝试编写一个函数,它可以将这个类型转换为main类型

例如:

[INT 1,INT 2,LIST[INT 6,INT 8]=>[1,2,6,8]]
我该怎么做? 提前感谢您提供的有关的任何帮助,您不能

正如我试图解释的:在SML中不可能有这样的值

在你的翻译机上试试看

- val _ = [1,2, [6,8]];
stdIn:28.9-28.21 Error: operator and operand don't agree [literal]
  operator domain: int * int list
  operand:         int * int list list
  in expression:
    2 :: (6 :: 8 :: nil) :: nil
如果我们用基本结构而不是语法糖来构造列表,那么列表
[1,2,3]
将变成
1::2::3::nil

现在,如果我们看看两个“构建块”cons和nil的类型

- op::;
val it = fn : 'a * 'a list -> 'a list
- nil;
val it = [] : 'a list
然后我们看到中缀运算符cons在左侧接受类型为
'a
的参数,在右侧接受类型为
'a
的列表。
因此,我们可以看到,如果我们构建了一个int列表,那么我们必须在左侧给它一个int,在右侧给它一个int列表(如上面的示例所示)。从这一点可以清楚地看出,我们不能这样做:

[1, 2] :: 3 :: nil

这与
(1::2::nil)相当::3::nil

这基本上是重复的,特别是我们在评论中讨论的内容。是的,但我定义了一个函数来转换它,但只是将INT类型转换为INT,我无法处理其他类型
列表
。实际上我只想在输出中以手动方式显示,没有别的了。`datatype intnest=INT of INT | intnest LIST的列表;fun tagged2s(INT i)=valOf(INT.fromString(INT.toString i))映射tagged2s[INT 1,INT 4]`它的结果是:
valit=[1,4]:int list
,但我不知道如何对类型list执行此操作。我希望理解我的意思。