/** * Possible extensions of the Stratego Library Hashtable strategies. * * @author Martin Bravenboer <martin@cs.uu.nl> */ module dryad/lib-ext/hash-table strategies hashtable-get(ifnot | key) = hashtable-get(|key) <+ where(ifnot => value) ; hashtable-put(|key, value) ; !value /** * Avoid the choice operator in hashtable push if we know that we key exists. * Also, fails if the key does not exist. */ hashtable-push-existing(|key, value) = where(hashtable-get(|key) => previous) ; hashtable-put(|key, [value | previous])