Language: Prolog Author: Pekka P. Pirinen (pekka@harlequin.co.uk) quine:-Q="write(quine),write((:-)),put(81),put(61),put(34),writes(Q),put(34),put(44),writes(Q),put(46),put(13),put(10),write(writes),put(40),put(91),put(72),put(124),put(84),put(93),put(41),write((:-)),write(put),put(40),put(72),put(41),put(44),write(writes),put(40),put(84),put(41),put(46),put(13),put(10),write(writes),put(40),put(91),put(93),put(41),put(46)",write(quine),write((:-)),put(81),put(61),put(34),writes(Q),put(34),put(44),writes(Q),put(46),put(13),put(10),write(writes),put(40),put(91),put(72),put(124),put(84),put(93),put(41),write((:-)),write(put),put(40),put(72),put(41),put(44),write(writes),put(40),put(84),put(41),put(46),put(13),put(10),write(writes),put(40),put(91),put(93),put(41),put(46). writes([H|T]):-put(H),writes(T). writes([]).