# core.logic

## generalize the notion of hash for robustness

### Details

• Type: Defect
• Status: Closed
• Priority: Major
• Resolution: Completed
• Affects Version/s: None
• Fix Version/s: None
• Component/s: None
• Labels:
None

### Description

The second nom/hash throws an exception, because the nom/hash constraint is ran before the predc one.

```(is (= (run* [q]
(nom/fresh [x]
(fresh [y]
(predc y nom? `nom?)
(nom/hash y x)
(== y 'foo))))
()))

(is (= (run* [q]
(nom/fresh [x]
(fresh [y]
(nom/hash y x)
(predc y nom? `nom?)
(== y 'foo))))
()))```

Perhaps, we can generalize the notion of hash.

### Attachments

1. logic-102.diff
07/Jan/13 12:39 PM
5 kB
2. refactoring.diff
08/Jan/13 7:04 AM
2 kB

### Activity

Field Original Value New Value
Description The second nom/hash throws an exception, because the nom/hash constraint is ran before the predc one.
{code}
(is (= (run* [q]
(nom/fresh [x]
(fresh [y]
(predc y nom? `nom?)
(nom/hash y x)
(== y 'foo))))
()))
(is (= (run* [q]
(nom/fresh [x]
(fresh [y]
(nom/hash y x)
(predc y nom? `nom?)
(== y 'foo))))
()))
{code}

Perhaps, we can generalize the notion of hash.
The second nom/hash throws an exception, because the nom/hash constraint is ran before the predc one.
{code}
(is (= (run* [q]
(nom/fresh [x]
(fresh [y]
(predc y nom? `nom?)
(nom/hash y x)
(== y 'foo))))
()))

(is (= (run* [q]
(nom/fresh [x]
(fresh [y]
(nom/hash y x)
(predc y nom? `nom?)
(== y 'foo))))
()))
{code}

Perhaps, we can generalize the notion of hash.
 Resolution Completed [ 1 ] Status Open [ 1 ] Resolved [ 5 ]
 Status Resolved [ 5 ] Reopened [ 4 ] Resolution Completed [ 1 ]
 Comment
 Attachment logic-102.diff [ 11797 ]
 Resolution Completed [ 1 ] Status Reopened [ 4 ] Resolved [ 5 ]
 Attachment refactoring.diff [ 11799 ]