LINUX.ORG.RU

История изменений

Исправление DRVTiny, (текущая версия) :

stdin.lines.map(len).average()

Несмотря на то, что мне нравится Ruby идеальной читабельностью, но вот такие хрени типа приведённой выше - это полный отстой, и очень жаль, что в crystal тоже оно.

Если уж вы что-то слышали о функциональщине, то знаете, что правильная запись такая:

(average (map (len) (lines stdin)))

Ну или хотя бы такая:

average(map(->(len), lines(stdin)))

pipe-овые точечки - это лютый треш, потому что левой стороне присваивается вообще совсем не то, что сразу за знаком равенства, а нечто, что вообще может ни малейшего отношения уже к исходным данным не иметь - и это нужно искать где-то очень-очень далеко справа.

S-выражения - это ключ к пониманию того, что важен результат, а не процесс, нужно начинать с задачи «построить дом», а не с изучения свойств древесины все возможных пород. В данном случае результатом является среднее элементов списка (а потом уж уточним какого, а может и передумаем брать именно такой список), а не это ваше stdin.хрен.знает.что

И да, Perl куда ближе к функциональным языкам, чем блевотный питон. Я уж не говорю о Julia и R, которые под капотом и есть функциональные языки.

Исходная версия DRVTiny, :

stdin.lines.map(len).average()

Несмотря на то, что мне нравится Ruby идеальной читабельностью, но вот такие хрени типа приведённой выше - это полный отстой, и очень жаль, что в crystal тоже оно.

Если уж вы что-то слышали о функциональщине, то знаете, что правильная запись такая:

(average (map (len) (lines stdin)))

Ну или хотя бы такая:

average(map(->(len), lines(stdin)))

pipe-овые точечки - это лютый треш, потому что левой стороне присваивается вообще совсем не то, что сразу за знаком равенства, а нечто, что вообще может ни малейшего отношения уже к исходным данным не иметь - и это нужно искать где-то очень-очень далеко справа.

S-выражения - это ключ к пониманию того, что важен результат, а не процесс, нужно начинать с задачи «построить дом», а не с изучения свойств древесины все возможных пород. В данном случае результатом является среднее элементов списка (а потом уж уточним какого, а может и передумаем брать именно такой список), а не это ваше stdin.хрен.знает.что