为啥我在模式匹配中得到非法模式?
Posted
技术标签:
【中文标题】为啥我在模式匹配中得到非法模式?【英文标题】:Why I am getting illegal pattern on pattern matching?为什么我在模式匹配中得到非法模式? 【发布时间】:2015-12-01 20:32:36 【问题描述】:1> X = 10.
10
2> Y = 9.
9
3> X - 1 = Y.
* 1: illegal pattern
4> Y = X - 1.
9
5> 10 - 1 = Y.
9
你能解释一下查询3>
中的非法模式是什么吗?谢谢!
【问题讨论】:
【参考方案1】:您要绑定的变量需要在左侧,而不是右侧。
这是正确的表达方式:
Y = X - 1.
【讨论】:
表达式 5 是正确的,因为它是模式匹配。使用该行,您是在说“我希望 Y(即 9)与 10 - 1(即 9)相匹配”。绑定变量只是模式匹配的一个特例,在表达式 2 中,您说“我希望 9 与 Y(未绑定)匹配”。由于它是未绑定的,它可以匹配任何东西,然后从那时起它被绑定到变量。 “我希望 Y(即 9)与 exp 3 中的 X - 1(即 9)相匹配? 在 5 中,shell 对您有所帮助,因为它可以看到“模式”可以被评估,因此它会执行它,然后检查结果是否为模式。它是10
。在 3 中这是不可能的,因为 X-1
不可能被解释为模式,它是一个表达式。你可以说模式是描述数据结构的东西,X-1
没有这样做。 5中对shell的处理有点混乱,可能不应该这样做。以上是关于为啥我在模式匹配中得到非法模式?的主要内容,如果未能解决你的问题,请参考以下文章