【问题标题】:Duplicate variable in pattern for tuples元组模式中的重复变量
【发布时间】:2014-03-05 05:08:30
【问题描述】:

我正在学习 SML 中的模式匹配,我想编写一个函数 fact_till (a,b) 来计算 a!/b!。例如,fact_till(5,3) 应该返回 5*4=20。

我的代码如下所示:

fun fact_till t = case t of
                  (a,a) => 1
                | (a,b) => a * fact_till(a-1,b)

但我得到了Error: duplicate variable in pattern(s): a。我认为 SML 无法识别模式 (a,a)。那么这种模式的正确表达方式是什么?

【问题讨论】:

    标签: tuples sml


    【解决方案1】:

    正确的做法是:

    fun fact_till (a,b) = if a = b
                          then 1
                          else a * fact_till(a - 1, b)
    

    如果您愿意,也可以使用 case 语句来完成:

    fun fact_till (a,b) = case a = b of
                          true => 1
                        | false => a * fact_till(a - 1, b)
    

    【讨论】:

    • 虽然没那么花哨:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2014-05-25
    • 2018-10-21
    • 1970-01-01
    • 2018-02-14
    • 2016-04-07
    相关资源
    最近更新 更多