Size: a a a

2018 April 02

АГ

Александр Гранин in fprog_spb
Пропонентам статической типизации хотелось бы пожелать делать ФП на С++. А то привыкли к белому и пушистому Haskell
источник

DZ

Dmitry Zuikov in fprog_spb
я на си делал фп
источник

DZ

Dmitry Zuikov in fprog_spb
в плюсах-то всё есть, что надо сейчас. там вроде даже лямбды есть
источник

DZ

Dmitry Zuikov in fprog_spb
а когда  не было, их можно было более-менее нормально изобразить
источник

АГ

Александр Гранин in fprog_spb
Вот как раз лямбды там чудовищная боль
источник

DZ

Dmitry Zuikov in fprog_spb
на си попробуйте, узнаете, что такое настоящая боль
источник

λO

λeonid Onokhov in fprog_spb
На шпинделе я вертел делать на плюсах иммутабельные структурки
источник

АГ

Александр Гранин in fprog_spb
Потому что нельзя сделать темплитную лямбду с шаблонными параметрами, а генеричная лямбда с auto нифига ни к чему не приводится
источник

АГ

Александр Гранин in fprog_spb
Как итог - нет нормального способа сделать каррирование
источник

АГ

Александр Гранин in fprog_spb
С этим auto вывод типов такой, что лучше бы его вообще не было. Я не понимаю, в чем большая проблема плюсовикам сделать темплитную std::function.
источник

АГ

Александр Гранин in fprog_spb
Dmitry Zuikov
на си попробуйте, узнаете, что такое настоящая боль
Больше боли богу ФП!
источник

DZ

Dmitry Zuikov in fprog_spb
ну это же си. на нём что так больно, что эдак больно
источник

АГ

Александр Гранин in fprog_spb
А Линусу норм
источник

PK

Pavel Khritonenko in fprog_spb
То есть «проблема хаскеля» в данном случае, что при построении свертки на каждый тапл будет выделена память в куче?
источник

PK

Pavel Khritonenko in fprog_spb
Потому что это особенность таплов в хаскеле?
источник

AI

Andrey Ivanov in fprog_spb
Достаточно сделать свой Табл, со строгостью и инстансами
источник

AI

Andrey Ivanov in fprog_spb
Причем, для этого не надо лезть в ядро - просто написать свой новый тип. Но умельцы находят экзотические варианты решения в рамках существующих ленивых типов и структур
источник

AI

Andrey Ivanov in fprog_spb
например так
mean1 = uncurry (/) . foldl (\(s,n) x -> (s+x, n+1)) (0, 0)

meancore (x:xs) s n = (meancore xs $! (s+x)) $! (n+1)
meancore [] s n     = s / n

mean2 l = meancore l 0 0

main = print $ mean1 [1..1E6]

cpu time: 2.22 sec, memory peak: 189 Mb
main = print $ mean2 [1..1E6]

cpu time: 0.31 sec, memory peak: 3 Mb
источник

PK

Pavel Khritonenko in fprog_spb
Не, буду лучше проституткой.
источник

AI

Andrey Ivanov in fprog_spb
Тогда тем более стоит разобрать этот пример - он наглядно демонстрирует, что если добавить баксы (дважды), то все пойдет гораздо лучше
источник