USING: assocs kernel namespaces sequences summary ; IN: recommendation-tracker SYMBOL: recommendations : recommended? ( recommender business -- ? ) recommendations get at member? ; ERROR: already-recommended recommender business ; M: already-recommended summary drop "You may only recommend the same business once." ; : add-recommendation ( recommender business -- ) 2dup recommended? [ already-recommended ] when recommendations get push-at ; : recommendation-totals ( -- totals ) recommendations get [ length ] { } assoc-map-as ; : init-recommendations ( -- ) H{ } clone recommendations set ;