Circular lists
    Thomas Charles CONWAY 
    conway at students.cs.mu.oz.au
       
    Thu Nov 27 11:21:01 AEDT 1997
    
    
  
Hi
With all this talk of circular lists, I thought people might be
interested/amused by the following.
Beware, it is a complete hack, but IMHO quite cute.
Enjoy,
Thomas
-- 
ZZ:wq!
^X^C
Thomas Conway               				      conway at cs.mu.oz.au
AD DEUM ET VINUM	  			      Every sword has two edges.
:- module inflist.
:- interface.
:- import_module list.
:- inst circular_list = bound([ground|circular_list]).
:- pred circularize(list(T), list(T)).
:- mode circularize(di(non_empty_list), out(circular_list)) is det.
:- implementation.
:- pragma c_code(circularize(A::di(non_empty_list), B::out(circular_list)), "
	B = A;
	while (field(mktag(1), A, 1) != 0)
		A = field(mktag(1), A, 1);
	field(mktag(1), A, 1) = B;
").
    
    
More information about the users
mailing list