Potential I7 Bug: Lists of texts versus lists of numbers

Okay, so for testing purposes, I was trying to run through all the possible combinations of three letters taken from a larger list of letters. I kept getting some strange errors and behaviors, so I tried to build a minimal example with the same bug. I tested it with a list of numbers instead of a list of text and there was no problem. When I changed to a list of texts, I suddenly got strange behavior and a crash. Oddly enough, it’s still not identical to the strange behavior I got from my full problem, but given that the only difference between the functioning example and the crashing example is whether I use numbers or text, I think that it’s probably a bug of some sort. I’ll report to inform7.com, but I also wanted to check here to see if anyone had encountered the problem and if there was a known workaround. (There’s also always the possibility that it’s not a bug but I just can’t see the problem with my code.)

Here’s my minimal examples with numbers and text:

[code]The lab is a room.

LN1 is a list of numbers that varies. LN1 is {1, 2, 3, 4}.

Instead of waiting:
let L2 be LN1;
let L3 be LN1;
repeat with X1 running through LN1:
remove X1 from L2;
now L3 is L2;
repeat with X2 running through L2:
remove X2 from L3;
repeat with X3 running through L3:
say “[X1],[X2],[X3].”

LT1 is a list of text that varies. LT1 is {“a”, “b”, “c”, “d”}.

Instead of jumping:
let L2 be LT1;
let L3 be LT1;
repeat with X1 running through LT1:
remove X1 from L2;
now L3 is L2;
repeat with X2 running through L2:
remove X2 from L3;
repeat with X3 running through L3:
say “[X1],[X2],[X3].”

Test me with “wait / jump”.[/code]

So I was able to bypass one of the issues that crops up by defining my own phrase to copy the value of a list. But I still run into another issue. See the following code:

The lab is a room.

LT1 is a list of text that varies. LT1 is {"a", "b", "c", "d"}.

Instead of jumping:
	let L2 be a copy of LT1;
	let L3 be a list of text;
	repeat with X1 running through LT1:
		say "*";
		say "Before removing X1 from L2, X1 is [X1] and L2 is [L2].";
		remove X1 from L2;
		say "After removing X1 from L2, X1 is [X1] and L2 is [L2].";
		say "Before copying L2 to L3, L2 is [L2] and L3 is [L3].";
		now L3 is a copy of L2;
		say "After copying L2 to L3, L2 is [L2] and L3 is [L3].";
		repeat with X2 running through L2:
			say "**";
			say "Before removing X2 from L3, X2 is [X2], L2 is [L2], and L3 is [L3].";
			remove X2 from L3;
			say "After removing X2 from L3, X2 is [X2], L2 is [L2], and L3 is [L3].";
			repeat with X3 running through L3:
				say "***";
				say "[X1],[X2],[X3]."


To decide what list of Ks is a copy of (L - a list of values of kind K):
	let the copied list be a list of Ks;
	repeat with item running through L:
		add item to the copied list;
	decide on the copied list.

Test me with "jump".

It seems like the error (*** Value handling failed: copy incompatible kinds ***) occurs when trying to assign a new value to a list of texts that has already had all of its elements removed.