Function SML函数作为查找表
在研究SML中的类型时,我发现Function SML函数作为查找表,function,sml,lookup-tables,Function,Sml,Lookup Tables,在研究SML中的类型时,我发现 fun monthI2S 1 = "January" | monthI2S 2 = "February" | monthI2S 3 = "March" | monthI2S 4 = "April" | monthI2S 5 = "May" | monthI2S 6 = "June" | monthI2S 7 = "July" | monthI2S 8 = "August" | monthI2S 9 = "September" |
fun monthI2S 1 = "January"
| monthI2S 2 = "February"
| monthI2S 3 = "March"
| monthI2S 4 = "April"
| monthI2S 5 = "May"
| monthI2S 6 = "June"
| monthI2S 7 = "July"
| monthI2S 8 = "August"
| monthI2S 9 = "September"
| monthI2S 10 = "October"
| monthI2S 11 = "November"
| monthI2S 12 = "December"
在我看来,它就像一个用作查找表的函数。(实际上,我甚至不知道这种类型的SML函数叫什么。它看起来像哈斯克尔归纳公式?)有没有办法通过处理输入为12
的情况而不得到“非穷举”警告
fun monthI2S m = if m <= 0 orelse M > 12 then NONE else ...?
| monthI2S 1 = "January"
| monthI2S 2 = "February"
| monthI2S 3 = "March"
| monthI2S 4 = "April"
...
fun monthI2S m=如果是m 12,那么就没有其他的了。。。?
|monthI2S 1=“一月”
|monthI2S 2=“二月”
|monthI2S 3=“三月”
|monthI2S 4=“四月”
...
显然不起作用,因为我无法协调
else
和|…
。或者我只是完全找错了方向,应该使用类似于大小写的方法吗?模式匹配从最上面的子句开始到最下面,所以您希望最一般的大小写放在最后
fun monthI2S 1 = "January"
| monthI2S 2 = "February"
...
| monthI2S m = nothing else matched, so m must be < 1 or > 12...
模式匹配从最上面的子句向最下面进行,所以您希望最一般的情况排在最后
fun monthI2S 1 = "January"
| monthI2S 2 = "February"
...
| monthI2S m = nothing else matched, so m must be < 1 or > 12...
“style”不是一个有名称的样式,它是一个有许多模式匹配子句的常规函数。“style”不是一个有名称的样式,它是一个有许多模式匹配子句的常规函数。