@haskellru

Страница 304 из 1551
Vasiliy
16.06.2017
19:24:53
про аннотации согласен...

Alexander
16.06.2017
19:25:40
с этим overloading-ом даже не в toplevel

в общем в задачках с курса который в ПОМИ читали меня сильно понапрягало

это конечно не серьеное что-то, но все равно

Google
Vasiliy
16.06.2017
19:26:53
из того, что не указано, но мне показалось интересным - кастомный синтаксис

http://idris.readthedocs.io/en/latest/tutorial/syntax.html

наверное, кто-то сможет замутить вообще какой-нибудь чумовой дсл

Evgenij
16.06.2017
19:29:17
Ребята что вы всё фигнёй маетесь - вон надо под ру поправить либу))https://github.com/facebookincubator/duckling

Vasiliy
16.06.2017
19:31:13
ещё есть какой-то elaborator reflection http://docs.idris-lang.org/en/latest/reference/elaborator-reflection.html

я нихрена не понял, что это такое и как этим пользоваться, но в мэйл-листе, по-моему, читал, что его используют в частности для deriving(Functor)

то есть можно написать свой класс (интерфейс по-идрисовски) и запилить для него deriving без влезания в сам компилятор

а, ну и тайп-провайдеры, которые, как мне кажется, не такая уж и крутая фича, но про которые так любят рассказывать байки знакомые F#-прогеры

вот, мол, я компилю прожку, а компилятор лезет в субд на продакшоне и проверяет, что мой код совместим с текущей версией схемы

Sergey
18.06.2017
06:45:55
Есть данные: data Info = Info { optionalField :: Maybe Int , requiredField :: Int } кто знает, есть ли синтаксис чтобы заполнить так: someMakeInfo requiredField = 42 -> Info { optionalField = Nothing, requiredField = 42 }

Если создать дефолтную запись и менять поля def { requiredField=43 }, то при таком создании есть возможность случайно не указать обязательных полей. А если создавать с нуля, то нужно перечислять все необязательные = Nothing.

Artyom
18.06.2017
09:44:11
сделай обязательные поля строгими и нельзя будет их не заполнить

а, нет, я неправильно понял задачу

Google
Mansur
18.06.2017
10:01:17
может, сделать инстанс Default, чтобы def ставил опциональные поля в Nothing, и потом def { requiredField = 42 } конечно, в дальнейшем могут быть проблемы с семантикой Default, он, наверное, не для таких целей написан

Alexander
18.06.2017
10:18:43
можно сделать defaultInfo если он имеет смысл или уиный конструктор mkInfo куда надо перечислить все поля которые нужны

Vladimir
18.06.2017
10:22:37
можно вместо requiredfield передавать функцитю от Info -> Info ?

Denis
18.06.2017
10:27:58
http://www.haskellforall.com/2017/06/dhall-is-now-template-engine.html

Диёр
18.06.2017
18:23:20
Гайс, как cabal-dev поставить? При попытке собрать из исходников или просто cabal install cabal-dev вылетает это Resolving dependencies... cabal: Could not resolve dependencies: trying: base-4.9.1.0/installed-4.9... (dependency of cabal-dev-0.9.2) trying: cabal-dev-0.9.2:-no-cabal-dev trying: cabal-dev-0.9.2:-build-tests next goal: process (dependency of cabal-dev-0.9.2) rejecting: process-1.4.3.0/installed-1.4..., process-1.6.0.0, process-1.5.0.0, process-1.4.3.0, process-1.4.2.0, process-1.4.1.0, process-1.4.0.0, process-1.3.0.0, process-1.2.3.0, process-1.2.2.0, process-1.2.1.0, process-1.2.0.0 (conflict: cabal-dev => process>=1.0 && <1.2) rejecting: process-1.1.0.2 (conflict: base==4.9.1.0/installed-4.9..., process => base>=4 && <4.7 || >=3 && <4) trying: process-1.1.0.1 next goal: directory (dependency of process-1.1.0.1) rejecting: directory-1.3.0.0/installed-1.3..., directory-1.3.1.1, directory-1.3.1.0, directory-1.3.0.2, directory-1.3.0.1, directory-1.3.0.0 (conflict: cabal-dev-0.9.2:no-cabal-dev => directory>=1.0 && <1.3) rejecting: directory-1.2.7.1, directory-1.2.7.0, directory-1.2.6.3, directory-1.2.6.2, directory-1.2.5.1, directory-1.2.5.0, directory-1.2.4.0, directory-1.2.3.1, directory-1.2.3.0, directory-1.2.2.1, directory-1.2.2.0, directory-1.2.1.0, directory-1.2.0.1, directory-1.2.0.0 (conflict: process => directory>=1.0 && <1.2) rejecting: directory-1.1.0.2 (conflict: base==4.9.1.0/installed-4.9..., directory => base>=4.4 && <4.6) rejecting: directory-1.1.0.1 (conflict: base==4.9.1.0/installed-4.9..., directory => base>=4.2 && <4.5) rejecting: directory-1.1.0.0, directory-1.0.1.2 (conflict: base==4.9.1.0/installed-4.9..., directory => base>=4.2 && <4.4) rejecting: directory-1.0.1.1, directory-1.0.1.0 (conflict: base==4.9.1.0/installed-4.9..., directory => base>=4.1 && <4.3) rejecting: directory-1.0.0.3, directory-1.0.0.0 (conflict: base==4.9.1.0/installed-4.9..., directory => base<4.3) rejecting: directory-1.2.6.1 (conflict: process => directory>=1.0 && <1.2) Dependency tree exhaustively searched.

Arseniy
18.06.2017
19:04:20
Зачем кабал, если есть стэк?

Alex
18.06.2017
19:06:57
Я раньше о стеке не слышал, кабал вовсю использовал

Donat
18.06.2017
19:21:08
какую библиотеку для postgresql лучше использовать для простого проекта?

В гугле довольно старые статьи

Arseniy
18.06.2017
19:21:49
Зачем стэк, если есть nix...

Dmitry
18.06.2017
19:55:38
Зачем стэк, если есть nix...
Когда будет годный туториал, как поставить nix и использовать его нормально на какой-нибудь убунте, чтобы не иметь проблем и понимать, что происходит (дабы уметь редактировать не только .cabal файлы, но ещё и сгенерированные .nix выражения), тогда, возможно, он станет более популярным ;) А stack лучше тем, что из коробки работает лучше, проще и сразу. Не очень большинству важно, к сожалению, как я понял со временем что технологии хорошии или имеют классную модель. Важно, чтобы работало без особых проблем и можно было сразу начать без геморроя...

Max
18.06.2017
20:23:29
Nix пиздец, oče složno

Содомия суицид с nix-shell очень ненужная и ухудшающая UX

Nix для серверов ещё ничего, как замена анзиблу, но на рабочей станции абсолютно лишний

Arseniy
18.06.2017
20:28:59
3,5 года на nixos на всех компуктерах Не понимаю, как можно жить на чем то другом

Max
18.06.2017
20:31:05
Я вообще не пойму смысла ставить хаскельные зависимости в систему. Удобнее кидать все зависимости в одно место и так дистрибьютить.

Arseniy
18.06.2017
20:36:32
Что подразумевается под этим вопрос?

nix-shell используется относительно редко Создал конфигурацию проекта Загрузил nix-shell на конфиг и работаешь

corpix
18.06.2017
20:42:20
3,5 года на nixos на всех компуктерах Не понимаю, как можно жить на чем то другом
А сервера на nix держите? Стабильно работает? Я вот уже который год смотрю на неё, хочу перейти везде(сервера+рабочие станции), но не решаюсь из-за того что встречаю крайне много противоречивых мнений :)

Google
Arseniy
18.06.2017
20:47:38
Держим

Работает

corpix
18.06.2017
20:57:01
Работает
И прям совсем проблем нет?)

Arseniy
18.06.2017
22:16:17
Нет :)

Дмитрий
18.06.2017
22:21:02
Видимо, попали в рай)

Arseniy
18.06.2017
22:23:02
Ну я активный nixpkgs контрибьютор (раньше так вообще) Плюс с нами другие nixos чуваки работают

Mansur
18.06.2017
23:27:56
Гайс, как cabal-dev поставить? При попытке собрать из исходников или просто cabal install cabal-dev вылетает это Resolving dependencies... cabal: Could not resolve dependencies: trying: base-4.9.1.0/installed-4.9... (dependency of cabal-dev-0.9.2) trying: cabal-dev-0.9.2:-no-cabal-dev trying: cabal-dev-0.9.2:-build-tests next goal: process (dependency of cabal-dev-0.9.2) rejecting: process-1.4.3.0/installed-1.4..., process-1.6.0.0, process-1.5.0.0, process-1.4.3.0, process-1.4.2.0, process-1.4.1.0, process-1.4.0.0, process-1.3.0.0, process-1.2.3.0, process-1.2.2.0, process-1.2.1.0, process-1.2.0.0 (conflict: cabal-dev => process>=1.0 && <1.2) rejecting: process-1.1.0.2 (conflict: base==4.9.1.0/installed-4.9..., process => base>=4 && <4.7 || >=3 && <4) trying: process-1.1.0.1 next goal: directory (dependency of process-1.1.0.1) rejecting: directory-1.3.0.0/installed-1.3..., directory-1.3.1.1, directory-1.3.1.0, directory-1.3.0.2, directory-1.3.0.1, directory-1.3.0.0 (conflict: cabal-dev-0.9.2:no-cabal-dev => directory>=1.0 && <1.3) rejecting: directory-1.2.7.1, directory-1.2.7.0, directory-1.2.6.3, directory-1.2.6.2, directory-1.2.5.1, directory-1.2.5.0, directory-1.2.4.0, directory-1.2.3.1, directory-1.2.3.0, directory-1.2.2.1, directory-1.2.2.0, directory-1.2.1.0, directory-1.2.0.1, directory-1.2.0.0 (conflict: process => directory>=1.0 && <1.2) rejecting: directory-1.1.0.2 (conflict: base==4.9.1.0/installed-4.9..., directory => base>=4.4 && <4.6) rejecting: directory-1.1.0.1 (conflict: base==4.9.1.0/installed-4.9..., directory => base>=4.2 && <4.5) rejecting: directory-1.1.0.0, directory-1.0.1.2 (conflict: base==4.9.1.0/installed-4.9..., directory => base>=4.2 && <4.4) rejecting: directory-1.0.1.1, directory-1.0.1.0 (conflict: base==4.9.1.0/installed-4.9..., directory => base>=4.1 && <4.3) rejecting: directory-1.0.0.3, directory-1.0.0.0 (conflict: base==4.9.1.0/installed-4.9..., directory => base<4.3) rejecting: directory-1.2.6.1 (conflict: process => directory>=1.0 && <1.2) Dependency tree exhaustively searched.
Вместо него cabal sandbox же. Или оно что-то больше умеет?

Диёр
18.06.2017
23:29:22
Я хрен его знает, только сегодня захотел на хаскеле хотя бы хэлоу ворлд сделать, погуглил, первой ссылочкой шла статья с хабра, там рекомендовали cabal-dev юзать. Потом естественно стак попробовал т.к. кабал не ставился

Alexander
19.06.2017
05:49:34
cabal-dev не нужен с тех пор сендбоксы в cabal-install завезли

Alexey
19.06.2017
06:52:37
Други, есть вопрос. На выходных покопал сервант и возник такой вопрос: а как передать в модуль зависимости или настройки. Допустим мне в контексте каждой функции модуля нужно свойство. Я хочу задавать его в одном месте, а использовать в другом. Такой подход облегчает тестирование и разработку. Как вы решаете это тут?

Евгений
19.06.2017
07:00:00
Нет :)
Я тоже самое рассказываю всем коллегам про генту. А потом удивляюсь, что мир после месяца необновлений собрался без проблем

Alexey
19.06.2017
07:10:22
kajdayaFunktsia::MonadReader m Svoistvo => X -> m Y
ну так можно, да, но это нехило так добавляет бойлерплейта.

можно и явно параметром передавать

есть ли какие-то операции над модулями? типа взял модуль и вернул такой же только добавил в него функцию или чтото в этом духе?

Oleg
19.06.2017
07:16:00
ну так можно, да, но это нехило так добавляет бойлерплейта.
type AllNeededShit m = (MHRElemsConstraint m [Svoistvo1, Svoistvo2], MonadWriter m Log, MonadError m Kosyak) kajdayaFunkciya::AllNeededShit m=>X -> m Y

Alexey
19.06.2017
07:17:32
норм. попробую

Google
Alexey
19.06.2017
07:18:22
И еще момент - можно сделать так чтобы stack ghci автоматически при изменении файлов обновлялся? Без явного :r?

Alexey
19.06.2017
07:20:24
что не так с этим желанием?

Oleg
19.06.2017
07:20:35
Какой-то ад

Евгений
19.06.2017
07:22:23
И еще момент - можно сделать так чтобы stack ghci автоматически при изменении файлов обновлялся? Без явного :r?
soviet_engineering_solution: напиши скрипт, который будет слушать inotify на файлах и посылать в input stack ghci :r при изменениях

Donat
19.06.2017
07:36:46
https://github.com/reiddraper/ordeal (не пробовал)

Евгений
19.06.2017
07:40:29
Это обёртка над стеком? o.o

Vladimir
19.06.2017
07:47:07
Ghcid же есть для этого

Alexander
19.06.2017
08:15:17
ghcid уже называли?

а .. называли

Anatolii
19.06.2017
08:15:46
да вот иногда хочется именно ghci - чтобы потом что-то поделать внутри

если бы в ghcid какой-то режим добавили чтобы можно было поработать в нем

Alexander
19.06.2017
08:18:43
ясно

Евгений
19.06.2017
08:24:38
А почему удивляешься?
Например вот поэтому: >>> Unpacking ./rustc-beta-src.tar.gz to /var/tmp/portage/dev-lang/rust-99/work /usr/bin/python2.7: can't open file '/var/tmp/portage/dev-lang/rust-99/work/rustc-beta/src/etc/get-stage0.py': [Errno 2] No such file or directory * ERROR: dev-lang/rust-99::rust failed (unpack phase): * (no error message) * * Call stack: * ebuild.sh, line 115: Called src_unpack * environment, line 3142: Called die * The specific snippet of code: * export CFG_SRC_DIR="${S}" && cd ${S} && mkdir -p "${S}/dl" && mkdir -p "${S}/${BUILD_TRIPLE}/stage0/bin" && python2 "${S}/src/etc/get-stage0.py" ${BUILD_TRIPLE} || die * * If you need support, post the output of `emerge --info '=dev-lang/rust-99::rust'`, * the complete build log and the output of `emerge -pqv '=dev-lang/rust-99::rust'`. * The complete build log is located at '/var/tmp/portage/dev-lang/rust-99/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/dev-lang/rust-99/temp/environment'. * Working directory: '/var/tmp/portage/dev-lang/rust-99/work/rustc-beta' * S: '/var/tmp/portage/dev-lang/rust-99/work/rustc-beta'

@qnikst, ты, кстати, до сих пор gentoo developer?

Alexander
19.06.2017
08:26:37
формально да, по факту очень inactive

Евгений
19.06.2017
08:27:43
А кто openrc пилит щас?

Alexander
19.06.2017
08:28:27
williamh и ещё компания

там прикольные ребята пришли

Google
Alexander
19.06.2017
08:28:46
с williamh невозможно работать : (

Евгений
19.06.2017
08:29:02
define "невозможно"

Alexander
19.06.2017
08:29:56
у него свой взгляд на жизнь PR могут висеть годами, и он их может хотеть передалать почти полностью введя кучу проблем

у меня так с cgroups было

я конечно тоже "молодец" криво сделал

там из debian/debian-like люди подключились им удается лучше общий язык найти

Alexander
19.06.2017
08:33:07
нет

если про openrc

к сожалению

в итоге я долго вообще жил со своим форком openrc

но там мелочи, из меня сишник не очень хороший

Евгений
19.06.2017
08:35:06
Про openrc. Про haskell overlay я с тебя спрошу, когда у меня очередь раз развалится полсистемы после обновления ghc

Alexander
19.06.2017
08:37:42
рекурсивных сабслотов так и не довезли, без них печалька

Евгений
19.06.2017
08:40:12
Рекурсивных это как? Звучит тьюринг-полно, т.е harmful

Alexander
19.06.2017
08:41:46
A->B->C (зависимость по сабслотам), если A меняет версию, то ретригерриться должны и B и C

сейчас только B

соотвественно C - ломается

сейчас это не выражается в зависимостях, а это именно то, что нужно хаскелю

с другой стороны сабслоты сейчас в солвере ужасно реализованы, там шаг backtracking алгоритма на каждый сабслот

в итоге когда 900+ пакетов стоит то все ломается

Страница 304 из 1551