[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.16549 Reply
File: haskell-ap-large.png
Png, 6.40 KB, 640×360 - Click the image to expand
edit Find source with google Find source with iqdb
haskell-ap-large.png
Продолжение треда про язык программирования Haskell.
>> No.16551 Reply
Предыдущий тред тут >>11962
>> No.16560 Reply
А мое FFT теперь стабильно обгоняет pure-fft процентов на 10 и всего-то в 15 раз проигрывает numpy. http://hpaste.org/56293

Еще хотел спросить. FFT - это ведь пример использования динамического программирования?
>> No.16562 Reply
File: eccentric-goddess-of-2ch-015.jpg
Jpg, 69.32 KB, 480×640 - Click the image to expand
edit Find source with google Find source with iqdb
eccentric-goddess-of-2ch-015.jpg
>>16560
Не совсем, тут, хоть и имеет место, схожий метод декомпозиции, в итоге получается обычная древовидная рекурсия. Для динамики же важным свойством является именно перекрытие подзадач, т.е она в том или ином виде подразумевает мемоизацию.
>> No.16563 Reply
>>16562
s/то,/то/
slffix
>> No.16565 Reply
И, кстати, весьма примечательно то, что за счет ассоциативности операции независимы, т.е параллелизм изначально заложен в алгоритмы подобного типа. Если не лениво, можешь попробовать распараллелить.
>> No.16568 Reply
>>16549
Как раз объясните мне зачем нужен Rank-2 Polymorphism, кроме как не дать хитрому погроммисту переть рефы из одной ST-монады в другую.
>> No.16574 Reply
>>16568
Чтобы кванторы перед произвольными стрелочками расставлять, вестимо. Примерно полгода назад я писал маленькую мультиагентную систему, где понадобились какие-то гетерогенные контейнеры, в итоге накрутил что-то на RankNTypes и забыл, а позже, подивившись собственной упоротости, переработал логику и все это исчезло. Собственно, любой другой пример, который я мог бы привести с ходу, вероятно, показался бы несколько надуманным и искуственным. Асло, только что грепнул сорцы xmonad на наличие какого-нибудь Rank, как и ожидалось, люди могут обходиться и без них.
>> No.16576 Reply
>>16574
Но для кванторов достаточно ExistentialQuantification, да и гетерогенные контейнеры можно состряпать если данные в newtype обернуть.
>> No.16581 Reply
>>16576
Я бы не хотел, например, плодить сущности. Ведь (forall a => a -> b) -> b — тот же конструктор. И при возможности использовать полимоорфиз высших рангов, я бы, наверное, использовал его. Видимо, здесь уже на любителя ну или ждем гуру, который пояснит по-хардкору лол
>> No.16655 Reply
File: Screenshot at 2012-01-12 01:33:00.png
Png, 111.92 KB, 1366×744 - Click the image to expand
edit Find source with google Find source with iqdb
Screenshot at 2012-01-12 01:33:00.png
>>16565
Надо попробовать, тем более что я как раз плохо понимаю распределенние машинного времени в хачкеле.

А тем временем сделал алгоритм моментального преобразования фурье. Отличается от БПФ тем, что позволяет получить ряд фурье для каждой новой выборки сигнала за O(N) (в то время как БПФ для работы требует всегда требует новое окно выборок. Конечно они могут накладываться, но тогда весь вычислительный профит от БПФ сходит на нет). Русских ссылок на МПФ в открытом интернете не встречал, да и вообще среди знакомых ребят этот алгоритм неизвестен, поэтому вот английская бумажка http://www.eurasip.org/Proceedings/Eusipco/Eusipco1998/sessions/W%20A/[...]1.PDF вся суть там расписана в пункте 2.1


Вообще МПФ прост как 2 копейки, так что это на правах бампа. И еще он лучше ляжет на последовательности. Это я по инерции на списках делал.
>> No.16684 Reply
>>16655
При чем здесь хаски, машинное время распределяет ос. Меня твои ффт уже доебали, если честно. Как ты вообще додумался выбрать такую скучную задачу. в голос проиграл с 8.3-имени, наверное, от неожиданности
>> No.16686 Reply
>>16684
> При чем здесь хаски, машинное время распределяет ос
Нет. Ос передает приложению поток квантов. Что нисколько не мешает самому приложению разбить осные кванты на свои собственные и распределять их самостоятельно (что и происходит в случае использования green threads).
> Как ты вообще додумался выбрать такую скучную задачу.
Никто и не обещал, что будет весело.
>> No.16687 Reply
>>16686
> При чем здесь хаски, машинное время распределяет ос
> Нет. Ос передает приложению поток квантов. Что нисколько не мешает самому приложению разбить осные кванты на свои собственные и распределять их самостоятельно (что и происходит в случае использования green threads).
Вы говорите об одном и том же. Осло, в системах с гипертредингом все еще веселее.
>> No.16783 Reply
В общем, попытался я взяться за Хаскель, и сразу вопрос, который я наверняка могу разрешить сам с помощью гугла или внимательно прочитав учебник, но тут будет быстрее - для многих тут ответ должен быть очевиден.
Словом, я хочу написать функцию plus, которая будет складывать всё что угодно - обычный полиморфизм. Пишу сложение для чисел, векторов и матриц.
`
plus :: (Num a) => a->a->a
plus a b = a + b

plus :: (Num a) => [a]->[a]->[a]
plus a b = zipWith (\n1 n2 -> (n1+n2)) a b

plus :: (Num a) => [[a]]->[[a]]->[[a]]
plus a b = zipWith (\v1 v2 -> zipWith (\n1 n2 -> (n1+n2)) v1 v2) a b
`
Почему это не работает и как это исправить?
>> No.16784 Reply
>>16783
1) [a] — это подтип a. Дальше продолжать?
2) Твои plus-ы должны быть определены в инстансах одного и того же тайпкласса.
Мимопроходил-не-знающий-хаскель-кун
>> No.16786 Reply
>>16784
Но как же он подтип, если a у меня назван неким типом, а [a] - это массив, список, или как оно там в Хаскеле будет реализовано уже третий вопрос, но массив это точно не число и не подтип числа.
Короче, лётчик.жпг
>> No.16791 Reply
Как уже было сказано ранее, ad-hoc полиморфизм реализуется в хаски с помощью классов типов. Достаточно будет запилить класс Semigroup с одной единственной функцией plus и добавить инстансов каких-нибудь типов. Ну а с [[a]] все печально, сабтайпинг тут, конечно, не причем просто перед сигнатурой неявно стоит квантор всеобщности, связывающий все типовые перменнные во всем выражении вообще говоря, их можно засунуть внутрь, тем самым ограничив область связывания, но это уже совсем другая история, поэтому forall a . a более общий тип нежели forall a . [a]. Для таких трюков тебе подойдут монадки, но объяснять будет слишком долго, а мне лень, почитай тайпклассопедию что ли.
>> No.16793 Reply
>>16791
Так-так, стоп, я что-то не понял. Это как же так, расхваленный хаскель не имеет простого способа сделать такую элементарную хуйню? Я верно понимаю? Это считается "трюком"?
Кто-нибудь может привести пример работающего кода? Не, ну правда, 6 строк же всего, ё-моё! Или всё действительно так плохо, и он годится только на то, чтоб о нём говорить?
>> No.16795 Reply
>>16786
А что, Array уже не является подтипом Any?
> массив это точно не число и не подтип числа.
Не число и не подтип числа. А причём тут числа?
>>16791
...Или так.
>> No.16796 Reply
>>16793
Твоя элементарная хуйня именно что хуйня. И Хаски правильно делает, что не позволяет тебе ее реализовать.
Всё-тот-же-нихуя-не-понимающий-в-собаках-кун
>> No.16797 Reply
File: Untitled.png
Png, 15.16 KB, 336×244 - Click the image to expand
edit Find source with google Find source with iqdb
Untitled.png
>>16793
Так что ли тебе надо?
> расхваленный хаскель не имеет простого способа сделать такую элементарную
Чуть только встретил трудность - сразу в плач, я правильно понял?
>> No.16801 Reply
>>16797
... x + y = zipWith (+) x y
>> No.16804 Reply
>>16797
Ты сделал первый шаг, чтобы навелосипедить векторное пространство.
>>16793
Вот именно, ты не понял, а без понимания элементарных вещей тебе будет затруднительно объяснить что-то более сложное. Советую начать с матлогики.
>> No.16807 Reply
>>16797
Да, спасибо, именно так.
Если трудность заключается в том, что любители говорить о хаскеле предпочитают накатать пару абзацев бессмыслицы вместо нескольких строчек работающего кода, то это говорит, что в коммьюнити что-то пошло не так.

А можно ли этот код (заменив + на отдельный оператор plus, но не создавая ничего лишнего) модицифицировать так, чтоб запретить действия с тем, что не является матрицей, вектором или числом? Чтоб [[1,2],[2]] plus [[1,4],[2]] сказало мне, что plus не умеет работать с такими объектами, но без проблем сложил бы [[1,2],[1,2]] + [[1,2],[1,2]], а так же не понял бы что значит сложение [[[a]]]?
>>16804
Матлогику я знаю, спасибо. Советы лучше давать кодом. Более сложное будет только по прочтении RWH, когда это сложное можно будет куда-то приложить, а это будет не сегодня, потому что я только начал третью главу.
>> No.16808 Reply
>>16807
> А можно ли
Ай, не подмазывайся. Ребята тебе все верно сказали: иди и учи сам.
>> No.16809 Reply
>>16808
Никто не подмазывается, умник. Не можешь ответить - так и говори. Вы тут сидите и целыми днями строчите пасты об охуенности Хаскеля. Если при мне кто-то спрашивает что-то о языке, который я знаю, и что не требует написания большого количества кода - я в 90% случаев отвечаю, даже если это происходит в /б/. Ну просто, блядь, потому что это нихуя не стоит, мне легко ответить на вопрос, ответ на который я знаю. Не словами, а кодом. Потому что смысл не в том, чтоб "учить" и экзамены сдавать, а в том, чтоб блядь, решать задачи, пользуясь подходящим инструментом. А если верить посетителям этого раздела - Хаскель прям-таки безусловный лидер в удобстве.
Но пиздёж-пиздежом, а как доходит до дела, никто нихуя ответить не способен. Советуют начать с матлогики, или погадать по звёздам. Поразительный феномен, ящитаю.

Впрочем, нахуй я это пишу, всё равно это никто не прочтёт, кроме вас самих. Единственное, авторы того же RWH очень похожи на адекватов, поэтому возможно, что засилие долбоёбов - исключительно бордовый феномен, и на самом деле этот хачкель чего-то и стоит. Надо дочитать.
Короче, простите что прервал вашу демагогию. Всего хорошего.
>> No.16810 Reply
Как и ожидалось, этот парень вплотную подобрался к всяким веселым вещам вроде зависимых типов. Но ведь кот — это уже готовое решение, а пара абзацов бессмыслицы — информация, достаточная для самостоятельного нахождения решения. Тебе уже неоднократно указали на то, что все это делается с помощью классов типов, или ты всерьез рассчитываешь что кто-то здесь будет кормить тебя с ложечки? А может ключевой момент в том, что ты не понимаешь, что связывание типовых переменных локально, а не глобально?
>> No.16815 Reply
>>16797
> x + y = map (uncurry (+)) $ zip x y
чому такой пиздец?
(+) = zipWith (+)
> такой прыти
чому такой пиздец?
... , [[Num a]] = [Num a'], [Num a'] = Num a'' => [[Num a]] = Num a''
>> No.16820 Reply
>> No.16837 Reply
>>16820
засливан
>> No.16843 Reply
File: Static CD.jpg
Jpg, 181.72 KB, 713×713 - Click the image to expand
edit Find source with google Find source with iqdb
Static CD.jpg
>>16820
Гугль находит именно пикрелейтед.
>> No.16851 Reply
>>16843
хуй теперь усну блять
>> No.16853 Reply
>>16807
> Матлогику я знаю, спасибо.
Лемма Линденбаума (формулировка для формальных теорий первого порядка) это очень простой вопрос? Вопрос ко всем присутствующим. Да, я вас проверяю. А то достояниями Карри пользуетесь, а от математики далеко.
Мимоматематик
>> No.16854 Reply
>> No.16866 Reply
>>16853
шел бы ты обратно на очкопарашу, жыдоматематик
>> No.16869 Reply
>>16854
>>16866
Не думал, что пользователи Haskell окажутся так невоспитанным сбродом, не знающим основ математической логики. Позор, однако.
>> No.16871 Reply
>>16869
Начиная с какого момента времени лемма, доказываемая с применением AC, стала входить в основы математической логики?
>> No.16872 Reply
>>16871
Начиная с самого начала, в метаматематических доказательствах использовали аксиому выбора. Итак, я услышу формулировку для формальных теорий первого порядка?
>> No.16873 Reply
>>16872
"Самое начало", без дополнительных уточнений относительно этого начала, не является значимым моментом времени.
> Итак, я услышу
Очевидно, нет, так как в настоящей среде идет обмен символьной информацией, а не звуковой. Думаю, что не ошибусь, если скажу, что тут больше хаскелистов пришедших снизу, из программирования, а не сверху - из математики. Задай свой вопрос в /sci/ или на каком-нибудь dxdy.
>> No.16875 Reply
File: 1267378406093.jpg
Jpg, 12.46 KB, 200×200 - Click the image to expand
edit Find source with google Find source with iqdb
1267378406093.jpg
>>16872
Ух ты, а я думал она только для логик первого порядка. Расскажи, пожалуйста, как ее интерпретировать для теории групп.
>> No.16877 Reply
>>16873
Так-то он прав, вполнеупорядоченность используется для многих темных делишек.
>> No.16879 Reply
>>16877
окай.жопеге Но каких?
>> No.16882 Reply
>>16879
Например, можно наколдовать группу с носителем в произвольном множестве или базис в векторном пространстве. Вообще, не очень-то конструктивно, но тем не менее.
>> No.16883 Reply
>>16873
> "Самое начало", без дополнительных уточнений относительно этого начала, не является значимым моментом времени.
Является. Кстати, я вот тут подумал, в доказательстве нет использования аксиомы выбора - сам метод выбора формул нас не волнует.
> Очевидно, нет, так как в настоящей среде идет обмен символьной информацией, а не звуковой
Ничего, я вслух прочитаю.
>>16875
> логик первого порядка
Говноедский термин.
Логика первого порядка = исчисление предикатов первого порядка
Логика первого порядка = множество теорий первого порядка
> интерпретировать для теории групп.
Никак: чистая теория групп полна, поэтому под условия леммы не попадает.
>>16882
> группу с носителем
До чего же мерзкая терминология.
> в произвольном множестве
А вот хрен тебе.
> базис в векторном пространстве.
Базис Коши-Гамеля настолько скучен, что его не включили в курс матлогики.
>> No.16887 Reply
>>16883
Что мне делать, если вы сами между собой не можете договориться. До твоего поста я был уверен, что аксиоматическая теория первого порядка /= логика предикатов, на что и тоненько намекнул. Пока что ничего по существу ты не сказал, только покритиквал жидотерминологию. Ну и да, непустом, конечно же. А еще ты недостаточно добр.
>> No.16888 Reply
>>16887
> Что мне делать, если вы сами между собой не можете договориться.
Все уже договорились, что "логика чего-то там" говорить не будут.
> теория первого порядка
> аксиоматическая
Бывают другие теории первого порядка?
> логика предикатов
Что же это тогда? Множество формул а-ля Ершов-Полютин? Говноедские методы дискретной математики проникают в матлогику - казнить.
> ничего по существу ты не сказал
А что ты хочешь услышать?
> А еще ты недостаточно добр.
Я еще недостаточно зол.
>> No.16889 Reply
>>16869
Платочек дать?
>> No.16890 Reply
>>16888
Да, множество замкнутых формул, при таком походе теория групп тоже будет формальной теорией первого порядка. В любом случае дальнейшую терминологическую полемику считаю нецелесообразной, ведь ничего кроме обвинений в поедании какашек я не услышу.
>> No.16966 Reply
Тут есть кто-то кроме диванных теоретиков? Я бы хотел спросить о Реальном ИРЛ Хаскеле, надеюсь тут кто-нибудь на самом деле на нём пишет. Собственно, вопрос: какой примерно объём функионала в настоящих гуеприложениях уместится в 2-3 тысячи строк на Хаскеле? Ну так, несколько примерчиков на вскидку.
Спасибо.
>> No.17440 Reply
А вот есть у меня гиперссылки. Они могут быть абсолютными (http::/yandex.ru/search) и относительными (s/res/16459.xhtml). Или, например, если из http::/yandex.ru/search/test/show/10 вычесть http::/yandex.ru/search, то получим test/show/10 - относительную гиперссылку. Похоже на разность упорядоченных множеств. Нет ли какого-нибудь готового тайпкласса по этому поводу, который было бы удобно инстанциировать, или лучше не маяться дурью и тупо написать пару функций?
>> No.17442 Reply
>>16966
> Тут есть кто-то кроме диванных теоретиков?
Тут где-то был разработчик Хачкеля, писавший под него либы.

мимосиплюсил
>> No.17448 Reply
>>17442
Не знаю, тот ли, другой ли, но время от времени я и сам тут видел какого-то сорт оф нетеоретика. Ну или теоретика, но не очень диванного. Правда, настоящего кода я у него тоже не видел, но он хотя бы в своём теоретизировании оперировал реальными жизненными фактами, а не "кококо монады чистота упорядоченные множества теория категорий кококо". В прошлом треде даже можно было несколько умных вещей услышать (собственно, почему я вообще задался какими-то вопросами относительно Хаскеля). А этот как-то не удался. Народу мало и музыка как-то не очень. Столько раз сюда ходиил...
>> No.17638 Reply
А вот ребятки. Вопрос общего плана, но всё же. Пробовал ли кто-нибудь использовать хаскель для контроля за экспериментальным оборудованием?
Задач несколько: периодический (не реже раза в секунду) опрос приборов, по результатам опроса - соответствующая реакция, построение и обновление графиков в процессе работы, обработка полученной информации (оценка параметров шума и т.д.), возможность обмена и контроля по локальной сети. Для работы с железом есть спермобиблиотека на С, т.е. нужен foreign function interface, что ли.
Пока с переменным успехом использую питон+sicpy+qt, но с интересом смотрю в сторону хаскеля, т.к. есть проблемы с производительностью (решаемые легко апгрейдом, правда).
>> No.17648 Reply
> Пока с переменным успехом использую питон+sicpy+qt, но с интересом смотрю в сторону хаскеля, т.к. есть проблемы с производительностью (решаемые легко апгрейдом, правда).
Тебе, в первую очередь, лучше разобраться почему тормозит, а не бросаться втыкать в хачкель.
>> No.17697 Reply
>>17648
Тормозит-то понятно почему, хехе. Celeron 800Mhz / 384 Mb RAM не лучшим образом тянут такую тяжесть. Железо я вскоре поменяю, дело в другом. Интересно было бы посмотреть, в какой мере возможно использовать хаскель на таких задачах. Целесообразно ли это вообще? Может ли дать преимущества, допустим, в скорости разработки и простоте поддержки?
>> No.17700 Reply
>>17697
> Тормозит-то понятно почему, хехе. Celeron 800Mhz / 384 Mb RAM не лучшим образом тянут такую тяжесть
А ты все равно с профайлерчиком-то посиди, погляди как оно там. Потому что если ботлнек у тебя упирается, например в numpy и соответственно сишную либу, то использовать хачкель тебе смысла нет. А если в что-то другое - то может и есть.
>> No.17712 Reply
>>17700
Что ж, посмотрю. Благодарю.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]