Я что-то упустил или у нас есть пара несоответствий / неправильных символов? - PullRequest
0 голосов
/ 13 ноября 2010

Математики обычно считают, начиная с 1, и называют счетную переменную n (т. Е. «N-ным членом последовательности»). Специалисты-компьютерщики обычно считают, начиная с 0, и называют счетную переменную i (т. Е.индекс массива "). Вот почему я был смущен, узнав, что Seq.nth на самом деле возвращает" n + 1 член последовательности ".

Вдвойне запутанно то, что Seq.iteri делает то, что следует из его названияи пересекает последовательность, предоставляющую текущий индекс.

Я что-то упустил? Есть ли рациональная / история для этого неправильного числа / несоответствия? Или это была просто ошибка (которая, вероятно, не может быть исправлена, так как у нас естькоммерческий выпуск).

Редактировать

По общему признанию, мое утверждение об обычном использовании i и n не является строго верным, и я должен был быть более осторожнымтакое утверждение. Но я думаю, что трудно отрицать, что наиболее популярные языки начинают считать с 0 и что i и j, безусловно,чрезвычайно популярный выбор имен индексных переменных.Итак, когда я знаком с использованием Seq.iteri и Seq.mapi, а затем сталкиваюсь с Seq.nth, я думаю, что разумно подумать: «О, эта функция считает по-другому, возможно, другие способы подсчитываются, начиная с 1."

И, как я указывал в комментариях, сводки для Seq.iteri, Seq.mapi и Seq.nth только подтвердили мое предположение (обратите внимание, что intellisense дает только сводки, это недать вам описание каждого параметра, который вы должны найти в MSDN):

Seq.iter

Применяет данную функцию к каждому элементу коллекции.Целое число, переданное функции, указывает индекс элемента.

Seq.mapi

Создает новую коллекцию, элементами которой являются результаты применения данной функции к каждому изэлементы коллекции.Целочисленный индекс, переданный функции, указывает индекс (от 0) преобразовываемого элемента.

Seq.nth

Вычисляет элемент nth в сборнике.

Обратите внимание на акцент "nth", а не на мой, как будто все знают, что элемент nth в последовательностях отличается от ih элемент.

Ответы [ 2 ]

4 голосов
/ 13 ноября 2010

Если говорить об истории, nth - ноль, основанный на Лиспе, который, вероятно, и назван функцией F # См. общие спецификации lisp для nth.

Я не нашел, чтобы ваше утверждение о i и n в математике было правдой; обычно n - это число чего-то, а не индекс. В этом случае, это было количество раз, чтобы вызвать cdr, чтобы получить следующий элемент.

0 голосов
/ 13 ноября 2010

Массивы индексируются начиная с 0 на многих компьютерных языках, но некоторые языки начинаются с 1, а некоторые допускают выбор.Некоторые позволяют задавать диапазон индекса как часть объявления массива или даже изменять его во время выполнения.

Математики с такой же вероятностью могут начинать с нуля, как один, иногда используют другие диапазоны индекса и не прикрепляют никаких конкретныхзначение для букв «n» и «i».

Имена методов Seq.nth и Seq.iteri имеют плохое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...