[home] [2.0] [all] [geek] [other] [adult] [links] [options]

[Вернуться] [В новом окне]
Ответ

Имя
Sage
(капча появится по клику)
Тема   (ответ на 12)
Текст
Файл 
Видео  
Пароль  (для удаления постов и файлов)
К треду
  • Поддерживаемые типы файлов: GIF, JPG, PNG
  • Максимальный размер файла 2000 KB.
  • Изображение больше 200x200 пикселей будет сжато.
  • Сейчас 154 уникальных сообщений. Посмотреть каталог
  • Информация для тех, кто хочет поддержать нульчан

Файл: 145937352766.jpg - увеличить - (64.01KB, 399x399)
12 No. 12  
Так как тут никого нет, то я буду обучатся хачкелю в этом треде. И первый вопрос:
Monomorphysm Restriction. В книжке Холомёва есть пример
 
res = s + s
s = longComputation 10
longComputation :: Num a => a -> a
 

И оно говорит, что из-за того, что нам не известен тип res и s, то виражение s придется вычислять дважды. Вот тут то и возникает вопрос, какого компилятору не известен этот тип? (+) же нам говорит, что по обе стороны у него один тип, а значит s не может быть полиморфным.
Развернуть все картинки
>> No. 14  
Я не шарю в этом вашем Хачкеле, но подозреваю, что
 
`+` : (Num a, Num b, Num c) => a -> b -> c
 

>> No. 18  
>>14
А вот и нихера
 
(+) :: a -> a -> a
 

>> No. 19  
>>12
А если сделать
 
res = let x=s in x+x
 

?
c:РАКИ что-то подозревает.
>> No. 21  
>>19
И что должно поменятся, тот же pattern binding, только в профиль.
>> No. 22  
>>21
Ну, ты говоришь, что компилятор настолько тупой, что не может понять, что перед ним два абсолютно одинакрвых выражения. Может... А хотя да, ты прав, хер это поможет.

Бля, да кто вообще в 2016 пишет на Хачкеле без {-# LANGUAGE NoMonomorphismRestriction #-}?

c:РАКИ снова кагбе намкает.
>> No. 23  
>>22
Ну его же не для красоты ввели, а для того что бы у тебя все не начало тупить в один прикрасный момент.
И я не говорю, что компилятор тупой, это я какраз и пытаюсь выяснить, может быть есть какие-то обьективные причины почему он так себя ведет.
>> No. 201  
В о б щ е м захотелось написать скрипт для репостинга треков на soundcloud по ссылкам, постимым двачирами в одном треде в /mus/.
Решил посмотреть чё там у хаскилитов в плане бытового скриптинга, как оно щас: такой же ебучий случай как раньше, или полехче.
Получилось такое: https://gist.github.com/aemxdp/f92edd57a7db979529a4d56f3d766220
Начну с позитивных моментов:
  • Появился stack и stackage и теперь все либы в lts совместимы друг с другом, без проблем устанавливаются, и просто работают даже на винде
  • Появился wreq с хорошей документацией и линзовым апи, на котором относительно удобно можно слать запросы и разбирать ответы http://www.serpentine.com/wreq/tutorial.html
А теперь негативчик:
  • Ёбаный ужас со строками: есть String = [Char], есть ленивые и энергичные ByteString, есть Text, и всё это везде используется вперемешку, и постоянно приходится конвертировать из одного в другое
  • Импорты забирают дохуя времени: даже самые нужные базовые вещи раскиданы по десяткам пакетов и неймспейсов, приходится постоянно гуглить, сёрфать всю эту хуйню, подключать
  • В 2016 в хаскеле до сих пор нет интерполяции строк искаробки, и хоть это давно сделано в либах на темплейт хаскель квазиквотерах, но я ебал каждый раз их качать и подвязывать
  • Ебля с типами и перезаворачиванием монадок
О линзах можно рассказывать бесконечно, но влом. Лучше приведу простейший пример использования линз как get из js/lodash:
> r ^? responseBody . key "collection" . nth 0 . key "track" . key "id" . _Integer
> _.get(r, ['responseBody', 'collection', '0', 'track', 'id'], default)
https://lodash.com/docs/4.16.2#get
В линзовом решении, если на каком-то уровне будет пусто, вернёт Nothing, иначе Just result.
Что касается производительности и прожорливости скрипта в целом, думаю, дела неплохи но я ебал тестировать.
Для разбора хтмл ради интереса юзнул низкоуровневый tagsoup, который стримит хтмл, а не держит целиком в памяти,
и, как ни странно, даже для такого байтоёбского подхода выцепить нужные теги получилось более-менее красиво и удобно:
https://gist.github.com/aemxdp/f92edd57a7db979529a4d56f3d766220#file-2ch-mus-soundcloud-reposter-hs-L74
Короче, на хаскеле можно скриптовать, но это всё ещё для маньяков и самураев, на питоне или жс я бы написал то же самое быстрее.
Пока что хаскель как и раньше лучше всего подходит для экзотических стратегий вычисления и метаязыкового колдовства в духе едсл на (p)hoas.
>> No. 203  
ФИНГЕРБОКС ТРЕД
>> No. 206  
>>201
баттхерт неосилятора
>> No. 208  
Файл: 14753995845.png - увеличить - (868B, 138x34)
208
>>206
Я-то как раз осилятор, но пост писал для простых смертных из /pr/.
Лень было править перед тем как сюда репостить, один хуй доска мёртвая.
>> No. 209  
>>208
ахах осилятор. убирайся в своей пеар
>> No. 210  
>>201
>Ёбаный ужас со строками: есть String = [Char], есть ленивые и энергичные ByteString, есть Text, и всё это везде используется вперемешку, и постоянно приходится конвертировать из одного в другое
Overloaded strings
>> No. 211  
>>201
mda
->
>>210
>> No. 212  
>>208
Кстати говоря, чому так?
мимо-крок
>> No. 218  
>>210
Открой код. Конечно же там используются OverloadedStrings, они решают ну может 20% этих проблем.
>> No. 345  
Файл: 148009780144.png - увеличить - (81.39KB, 826x326)
345
SPJ со своим другом наконец-то разработали недостающую теорию,
открывающую мир нешаблонного параметрического полиморфизма байтоёбским типам со стека:
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/levity-1.pdf
>> No. 356  
>>345
левит и числа для лохов.
я, пожалуй, подожду второзаконие-полиморфизм
>> No. 391  
> s = longComputation 10
> longComputation :: Num a => a -> a
зачем?
[Вернуться] [В новом окне]

Удалить пост []
Пароль