Имитация функции длины для получения длины списка

Я пытаюсь смоделировать функцию Length в Mathematica v.8 для получения длины списка. Учитывая эти факты:

  • Пустой список представлен как {}
  • l = Rest [l] присваивает l (который является списком) список l без первого элемента
  • цикл While

Это мой первый год использования математики, и я не очень хорошо в этом разбираюсь, поэтому, вероятно, что-то (или все) не так в том, что я делаю:

Ej1[l_List] := Module[{i, v},
v = {{}};
i = 1;
While[l != v, l = Rest[l]; i++]
Return[i]
]

l = {a, b, c, d, e};

Когда Я пытаюсь запустить его, цикл никогда не заканчивается и выдает следующие предупреждения:

Set::shape: Lists {a,b,c,d,e} and {b,c,d,e} are not the same shape. >>

Set::shape: Lists {a,b,c,d,e} and {b,c,d,e} are not the same shape. >>

Set::shape: Lists {a,b,c,d,e} and {b,c,d,e} are not the same shape. >>

General::stop: Further output of Set::shape will be suppressed during this calculation. >>
5
задан rcollyer 24 October 2011 в 15:47
поделиться