@neauoire total travesty, minikanren/microkanren is the way to go