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

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

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

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

Date: 2014-09-11 02:21 pm (UTC)
From: [identity profile] 4da.livejournal.com
> Ещё и макросы, которые нельзя каррировать почему-то.
проблемы языков без четко разделенных syntax phases

Date: 2014-09-11 05:41 pm (UTC)
From: [identity profile] avnik.livejournal.com
рекурсивные/anaphoric макросы то можно?

Date: 2014-09-11 09:07 pm (UTC)
From: [identity profile] 4da.livejournal.com
в схемке? можно.

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

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

Date: 2014-09-11 11:26 am (UTC)
From: [identity profile] metaclass.livejournal.com
Ох блин, про goto очень точно. Его же не одобряли потому, что он убивает всякую возможность рассуждать о происходящем.
Тут то же самое - косвенная рекурсия, из понятных блоков только foldr

Date: 2014-09-11 02:14 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
http://kouzdra.livejournal.com/464695.html?thread=21930807#t21930807

"За рефал не скажу, поскольку не программировал - а вот в ML и ко спагетти код пишется легко и непринужденно:
..."

Там ещё и пример есть.

Date: 2014-09-11 03:52 pm (UTC)
From: [identity profile] thesz.livejournal.com
Ага. Внутре эффекты, как я и ожидал.

Уважаемый хозяин блога не может привыкнуть к тому простому факту, что внутре вычислений Хаскеля нет побочных эффектов. Вообще. Даже если написано when goodReason dieViolently.

Поэтому большую часть времени я на Хаскеле программирую, почти не включая мозг. У вычисления есть тип? Этого достаточно в 97,1415926% случаев.

Date: 2014-09-11 04:28 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
Там же, комментом ниже, есть без фефектов.

Date: 2014-09-11 05:09 pm (UTC)
From: [identity profile] thesz.livejournal.com
У вас глаз замылен. Там есть эффекты.

Date: 2014-09-11 05:25 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
Ну можно через параметр вставить и рекурсией.

Date: 2014-09-11 06:54 pm (UTC)
ext_646638: (Default)
From: [identity profile] rdia.livejournal.com
Ну Printf там вообще безобиден - хотите я в том же стиле вам вычисление квадратного корня напишу? Ещё проще будет, если методом половинного деления делать - 4 метки: старт, сдвиг левой границы, сдвиг правой границы, выход по точности.

Date: 2014-09-11 07:19 pm (UTC)
From: [identity profile] thesz.livejournal.com
Да-да Безобиден. Ага.

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

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

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

Date: 2014-09-11 01:54 pm (UTC)
From: [identity profile] swizard.livejournal.com
Согласен, и вряд ли эта задача существенно более красиво решается каком-нибудь другом языке.

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

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

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

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

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

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 3rd, 2025 10:25 am
Powered by Dreamwidth Studios