SML中的通配符

SML中的通配符,sml,Sml,我在SML中编写了一个max函数,它包含三个数字。如果我输入3个整数,效果很好。但是,如果我给函数一个通配符,它会抛出以下异常:max.sml:6.15错误:语法错误:将通配符替换为EQUALOP 为什么会这样?通配符仅用于模式匹配。它们不能用作表达式,因为它们的计算结果不是一个值。如果行有效,您希望该行做什么?sepp2k的答案是正确的。如果要为任意数量的整数实现max函数,请研究使用int list类型的参数。 1 fun max(a,b,c) =

我在SML中编写了一个max函数,它包含三个数字。如果我输入3个整数,效果很好。但是,如果我给函数一个通配符,它会抛出以下异常:
max.sml:6.15错误:语法错误:将通配符替换为EQUALOP


为什么会这样?

通配符仅用于模式匹配。它们不能用作表达式,因为它们的计算结果不是一个值。

如果行有效,您希望该行做什么?sepp2k的答案是正确的。如果要为任意数量的整数实现max函数,请研究使用
int list
类型的参数。
  1 fun max(a,b,c) =                                                                
  2     if a > b andalso a > c then a                                               
  3     else if b > a andalso b > c then b                                          
  4     else c                                                                      
  5 
  6                                                                                 
  6 val x = max(1,_,3);