|
| 1 | +function distinct(items) { |
| 2 | + return is_null(items) |
| 3 | + ? true |
| 4 | + : is_null(tail(items)) |
| 5 | + ? true |
| 6 | + : is_null(member(head(items), tail(items))) |
| 7 | + ? distinct(tail(items)) |
| 8 | + : false; |
| 9 | +} |
1 | 10 |
|
2 | 11 | const betty = amb(1, 2, 3, 4, 5); |
3 | 12 | const ethel = amb(1, 2, 3, 4, 5); |
4 | 13 | const joan = amb(1, 2, 3, 4, 5); |
5 | 14 | const kitty = amb(1, 2, 3, 4, 5); |
6 | 15 | const mary = amb(1, 2, 3, 4, 5); |
7 | 16 |
|
8 | | -require((kitty === 2) || (betty === 3)); |
9 | | -require((ethel === 1) || (joan === 2)); |
10 | | -require((joan === 3) || (ethel === 5)); |
11 | | -require((kitty === 2) || (mary === 4)); |
12 | | -require((mary === 4) || (betty === 1)); |
| 17 | +require(amb(kitty === 2, betty === 3)); |
| 18 | +require(amb(ethel === 1, joan === 2)); |
| 19 | +require(amb(joan === 3, ethel === 5)); |
| 20 | +require(amb(kitty === 2, mary === 4)); |
| 21 | +require(amb(mary === 4, betty === 1)); |
13 | 22 |
|
14 | 23 | require(distinct(list(betty, ethel, joan, kitty, mary))); |
15 | 24 |
|
16 | 25 | list(list('betty', betty), list('ethel', ethel), list('joan', joan), |
17 | | - list('kitty', kitty), list('mary', mary)); |
| 26 | + list('kitty', kitty), list('mary', mary)); |
0 commit comments