?- compress([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X). X = [a,b,c,a,d,e] #### DB<1> my $p; print grep { $p = $_ if $_ ne $p } (a,a,a,a,b,c,c,a,a,d,e,e,e,e); abcade #### DB<2> my $p; print map { $p ne $_ ? $p = $_ : () } (a,a,a,a,b,c,c,a,a,d,e,e,e,e) abcade #### DB<3> use feature "state"; print map { state $p; $p ne $_ ? $p = $_ : () } (a,a,a,a,b,c,c,a,a,d,e,e,e,e) abcade #### print grep { $_ ne $^PRE } (a,a,a,a,b,c,c,a,a,d,e,e,e,e); abcade