public override string ToString()
{
string listStr = "[";
listStr += _head.ToString();
if (_tail is PrologCodeNonEmptyList)
{
listStr += GetListTailStr((PrologCodeNonEmptyList)_tail) + "]";
}
else if (_tail is PrologCodeEmptyList)
{
listStr += "]";
}
else
{
listStr += "|" + _tail.ToString() + "]";
}
return listStr;
}