пару слов про rust
Jan. 8th, 2020 07:02 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Принцип дизайна: non sunt entia multiplicanda sine necessitatem.
Короче, CPS рулит; сейчас вмажу моноид, https://docs.rs/functional/0.0.5/functional/trait.Monoid.html, чтобы вообще не дублировать ничего и не писать циклы, где не надо (а просто fold).
Короче, CPS рулит; сейчас вмажу моноид, https://docs.rs/functional/0.0.5/functional/trait.Monoid.html, чтобы вообще не дублировать ничего и не писать циклы, где не надо (а просто fold).
Подробности:
1. Не нужно дублировать данные. Если у тебя есть данные, присобачь к ним какой-нибудь метод, чтобы применять твою функцию и устраивать какой-нибудь fold, возможно, с мапингом и фильтрацией.
2. Поэтому, вместо того, чтобы передавать коллекцию в функцию, передавай функцию в коллекцию.
3. Для фолда моноид самое то (а иначе откуда фолд?) В моноиде есть "начальное значение" и ассоциативная бинарная операция. Чтобы проехаться по коллекции, это все что надо - начали с "начального значения", и все данные переварили, получив одно значение. Левый фолд или правый - для моноида роли не играет, можно и распараллелить.