Size: a a a

2020 March 21

AZ

Alex Zhukovsky in rust_offtopic
Aleksandr Khristenko
nmap f = zipWith ($) $ iterate ((.) f) id
Вот это можно переписать как
nmap f xs = zipWith ($) (iterate ((.) f) id) (xs)
где (iterate ((.) f) id) - первый список
(xs) - второй список
($) - функция, которой элементы склеиваются
я знаю как работает eta reduce, вопрос не в этом же
источник

AZ

Alex Zhukovsky in rust_offtopic
мне $ тяжело воспринимать как-то кроме "оператор чтобы не писать скобочки"
источник

A

Aleksandr Khristenko in rust_offtopic
Alex Zhukovsky
я знаю как работает eta reduce, вопрос не в этом же
Представь, а я не знаю =\
источник

A

Aleksandr Khristenko in rust_offtopic
Alex Zhukovsky
мне $ тяжело воспринимать как-то кроме "оператор чтобы не писать скобочки"
<$> ты тоже не воспринимаешь?
источник

AZ

Alex Zhukovsky in rust_offtopic
Aleksandr Khristenko
<$> ты тоже не воспринимаешь?
хм
источник

AZ

Alex Zhukovsky in rust_offtopic
нет, его я воспринимаю нормально
источник

AZ

Alex Zhukovsky in rust_offtopic
да, хорошая аналогия
источник

AZ

Alex Zhukovsky in rust_offtopic
спасибо, распарсил
источник

AZ

Alex Zhukovsky in rust_offtopic
хотя все равно понять тяжелее чем компрехейшн или наивный варриант
источник

A

Aleksandr Khristenko in rust_offtopic
Ну, если переписать как
nmap f xs = zipWith ($) funcs elems where
 funcs = iterate ((.) f) id
 elems = xs

То будет понятнее
источник

AZ

Alex Zhukovsky in rust_offtopic
и кстати тут баг
источник

AZ

Alex Zhukovsky in rust_offtopic
должно быть iterate ((.) f) f
источник

A

Aleksandr Khristenko in rust_offtopic
Alex Zhukovsky
должно быть iterate ((.) f) f
почему?
источник

AZ

Alex Zhukovsky in rust_offtopic
мне кажется что функцию нужно 1+ раз применяь, а не 0+
источник

A

Aleksandr Khristenko in rust_offtopic
В задаче было что первый элемент должен остаться без применения функции
источник

A

Aleksandr Khristenko in rust_offtopic
поэтому id и нужен
источник

EG

Emmanuel Goldstein in rust_offtopic
Bogdan
Хм вроде равославно это flat / flatMap

Не пойму при чем тут джион🤔
λ => join $ intersperse " " ["multiple", "(three)", "words"]
"multiple (three) words"
источник

EG

Emmanuel Goldstein in rust_offtopic
Потому что это работает как join
источник

AZ

Alex Zhukovsky in rust_offtopic
Aleksandr Khristenko
В задаче было что первый элемент должен остаться без применения функции
не уверен
источник

A

Aleksandr Khristenko in rust_offtopic
Переслано от Alexander Krivitskiy
В этом варианте функция аплаится на первый элемент, а надо первый элемент оставить не тронутым. В моём варианте из-за этого в два раза больше кода :(
источник