Type-hint the WAM `setf` functions
Not sure why I never did this before...
author |
Steve Losh <steve@stevelosh.com> |
date |
Sun, 10 Jul 2016 21:08:12 +0000 |
parents |
ae2b13a9a629 |
children |
(none) |
(in-package #:bones.paip)
(clear-db)
(rule (member ?item (?item . ?)))
(rule (member ?item (? . ?rest))
(member ?item ?rest))
(rule (next-to ?x ?y ?list)
(in-order ?x ?y ?list))
(rule (next-to ?x ?y ?list)
(in-order ?y ?x ?list))
(rule (in-order ?x ?y (?x ?y . ?)))
(rule (in-order ?x ?y (? . ?rest))
(in-order ?x ?y ?rest))
(rule (= ?x ?x))
(rule
(zebra ?houses ?water-drinker ?zebra-owner)
;; Houses are of the form:
;; (HOUSE ?country ?pet ?cigarette ?drink ?color)
(= ?houses
((house norway ? ? ? ?)
?
(house ? ? ? milk ?)
?
?))
(member (house england ? ? ? red ) ?houses)
(member (house spain dog ? ? ? ) ?houses)
(member (house ? ? ? coffee green ) ?houses)
(member (house ukraine ? ? tea ? ) ?houses)
(member (house ? snails winston ? ? ) ?houses)
(member (house ? ? kools ? yellow) ?houses)
(member (house ? ? lucky-strike orange-juice ? ) ?houses)
(member (house japan ? parliaments ? ? ) ?houses)
(in-order (house ? ? ? ? ivory )
(house ? ? ? ? green ) ?houses)
(next-to (house ? ? chesterfield ? ? )
(house ? fox ? ? ? ) ?houses)
(next-to (house ? ? kools ? ? )
(house ? horse ? ? ? ) ?houses)
(next-to (house norway ? ? ? ? )
(house ? ? ? ? blue ) ?houses)
(member (house ?water-drinker ? ? water ?) ?houses)
(member (house ?zebra-owner zebra ? ? ?) ?houses))
(time (query-all (zebra ?houses ?water ?zebra)))
; (declaim (optimize (speed 3) (safety 0)))