metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-09-11 12:38 pm

Ниасилил

Почему я втащил кложурь вместо хаскеля в продакшен - потому что слишком туп, чтобы понять вот такое: http://hackage.haskell.org/package/base-4.7.0.1/docs/src/Data-List.html#permutations

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

А если внутри софта будет еще и FFI (а он там будет, потому что некоторых нужных мне вещей в х-ле нет и придется писать самому) - оно еще при ошибках в нем и в нечитабельные сегфолты, никак не связанные с текущей операцией (ибо ленивость) валиться будет.

[identity profile] blackyblack.livejournal.com 2014-09-11 10:07 am (UTC)(link)
Дак у кложури в ядре ровно та же чернь. Ещё и макросы, которые нельзя каррировать почему-то.

[identity profile] evgenijm86.livejournal.com 2014-09-11 10:19 am (UTC)(link)
Да, Хаскел позволяет выразить некоторые идеи очень компактно. Настолько, что потом хрен поймешь что имелось ввиду. Это удобно при написании кода, но абсолютно не удобно тому, кто потом будет это сопровождать.

И вообще все эти where и рекурсия чем-то подозрительно напоминают хорошо замаскированный goto.
Edited 2014-09-11 10:32 (UTC)

[identity profile] tzirechnoy.livejournal.com 2014-09-11 10:20 am (UTC)(link)
Около 20 минут прилагал сознательные усилия. Всё равно не могу разобраться.

Фанбейсик, блин. В нём тожэ было дофига любителей писать программу на 8 строк, в которой без изолирвания элементарных блоков на бумажке разобраться нельзя было.

[identity profile] permea-kra.livejournal.com 2014-09-11 12:31 pm (UTC)(link)
Как я понял, там цель - получить все возможные перестановки даже в случае бесконечной последовательности. Это гораздо менее тривиальная задача, чем 'получить все перестановки конечной последовательности' и действительно требует хитрожопого выверта.

[identity profile] max630.livejournal.com 2014-09-11 12:39 pm (UTC)(link)
полагаю, там можно было и яснее написать, но они наотимизировали. ну и эта милая привычка лепить 1-2 сибвольные имена...

[identity profile] antilamer.livejournal.com 2014-09-11 04:18 pm (UTC)(link)
Скажу честно, я тоже ничего не понял (в Permutations). Интересно было бы разобраться и переписать почитаемее.

Про FFI тоже полностью согласен. Недавно целый день на хакатоне пытался выяснить, откуда в программе с использованием gtk2hs вываливается out of memory из нативного кода. Так и не выяснил.

[identity profile] geniepro.livejournal.com 2014-09-11 04:39 pm (UTC)(link)
Для контраста следовало бы привести референсную реализацию этих пермутаций на Кложуре...

[identity profile] antilamer.livejournal.com 2014-09-11 05:22 pm (UTC)(link)
Нашёл обсуждение, из которого родилась текущая версия permutations.
http://www.haskell.org/pipermail/glasgow-haskell-users/2009-August/017640.html
http://www.haskell.org/pipermail/libraries/2007-December/thread.html#8788