gpt4 book ai didi

parameters - SML - 如何检查模式匹配中的两个参数是否相同?

转载 作者:行者123 更新时间:2023-12-01 16:43:13 27 4
gpt4 key购买 nike

我有这段代码可以计算河内运动并将其作为列表返回。到目前为止,这有效。

fun hanoi(0,start,ziel) = []
| hanoi(1,start,ziel) = [(1,start,ziel)]
| hanoi(anz,start,ziel) = hanoi(anz-1,start,hilf(start,ziel))
@ ((anz,start,ziel)::hanoi(anz-1,hilf(start,ziel),ziel))
and hilf(start,ziel) = 6-(start+ziel);

现在我的问题是如何检查开始和目标(德语:ziel)相同的最后一个模式?我尝试过这样的事情:

|hanoi(anz,start,ziel=start) = []

但是没有成功。似乎我在完全理解模式匹配的概念时遇到问题。但我找不到太多有用的资源。

提前致谢!

最佳答案

一般来说,您不需要检查这一点,因为 start=ziel 不是模式 - 模式(在大多数情况下)是值或特殊模式,例如 _ 或变量名称,而 start = ziel 是未完全求值的表达式。

相反,通过模式匹配来提取 startziel,然后您可以使用 case on 或使用 if 语句来根据是否 执行不同的操作>开始= ziel

例如:

| hanoi(anz, start, ziel) = if start = ziel
then ...
else ...

| hanoi(anz, start, ziel) = case start = ziel of
true => ...
| false => ...

这两个选项的作用相同——使用哪一个是风格上的决定。

关于parameters - SML - 如何检查模式匹配中的两个参数是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23342822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com