2022-07-23 00:32:41 +03:00
|
|
|
This tests an previously erroneous case in the pattern compiler. It was assuming
|
|
|
|
that the variables bound in a guard matched the variables bound in the rest of
|
|
|
|
the branch exactly, but apparently this needn't be the case.
|
|
|
|
|
2024-07-10 17:46:18 +03:00
|
|
|
``` unison
|
2022-07-23 00:32:41 +03:00
|
|
|
foo t =
|
|
|
|
(x, _) = t
|
|
|
|
f w = w + x
|
|
|
|
|
|
|
|
match t with
|
|
|
|
(x, y)
|
|
|
|
| y < 5 -> f x
|
|
|
|
| otherwise -> x + y
|
|
|
|
|
|
|
|
> foo (10,20)
|
|
|
|
```
|
|
|
|
|
2024-07-10 19:17:15 +03:00
|
|
|
``` ucm
|
2022-07-23 00:32:41 +03:00
|
|
|
|
2023-12-22 14:55:24 +03:00
|
|
|
Loading changes detected in scratch.u.
|
|
|
|
|
2022-07-23 00:32:41 +03:00
|
|
|
I found and typechecked these definitions in scratch.u. If you
|
|
|
|
do an `add` or `update`, here's how your codebase would
|
|
|
|
change:
|
|
|
|
|
|
|
|
⍟ These new definitions are ok to `add`:
|
|
|
|
|
|
|
|
foo : (Nat, Nat) -> Nat
|
|
|
|
|
|
|
|
Now evaluating any watch expressions (lines starting with
|
|
|
|
`>`)... Ctrl+C cancels.
|
|
|
|
|
|
|
|
10 | > foo (10,20)
|
|
|
|
⧩
|
|
|
|
30
|
|
|
|
|
|
|
|
```
|