我试图在Haskell中编写一个测试函数,以使定义和返回函数以保持状态的想法变得混乱。这是我的尝试:
<table>
<tr>
<td onclick="toggle_visibility(this)">JOBID 5</td>
<td>Billing Ticket</td>
<td>Billing Status</td>
<td>Job Date</td>
<td>Drilling Contractor</td>
<td>Job Type</td>
<td>Lease Name</td>
<td>Job Status</td>
</tr>
<tr>
<td onclick="toggle_visibility(this)">JOBID 6</td>
<td>Billing Ticket</td>
<td>Billing Status</td>
<td>Job Date</td>
<td>Drilling Contractor</td>
<td>Job Type</td>
<td>Lease Name</td>
<td>Job Status</td>
</tr>
<tr>
<td onclick="toggle_visibility(this)">JOBID 7</td>
<td>Billing Ticket</td>
<td>Billing Status</td>
<td>Job Date</td>
<td>Drilling Contractor</td>
<td>Job Type</td>
<td>Lease Name</td>
<td>Job Status</td>
</tr>
</table>
<button id="toggleAll" onclick="toggleAll(this)">Hide All</button>
我的问题是,我希望将fib x = aux x results
where
results 0 = 1
results 1 = 1
results _ = -1
aux y res = ((res' y) , res')
where
res' = if res y /= -1 then res else newres2
where
(num,newres) = aux (y-1) res
(num2,_) = aux (y-2) newres
newres2 y = num + num2
newres2 k = newres k
定义中的y
参数绑定到newres2
定义处的y
。我希望我的新定义在此处具有确切的值aux
,并在运行时定义该值时将模式匹配为其特定值。有可能吗?
答案 0 :(得分:5)
您不能仅在数据构造函数上对变量进行模式匹配。
但是您可以进行比较:
newres2 k
| k == y = num + num2
| otherwise = newres k
当然,这将要求y
的类型具有一个Eq
实例,因为这是==
运算符的定义位置,但是事实已经如此,因为您正在使用在同一类中定义的/=
运算符。