
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

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 юзать. Потом естественно стак попробовал т.к. кабал не ставился

Олег
19.06.2017
03:36:25

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

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

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

Oleg
19.06.2017
07:09:25

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

Oleg
19.06.2017
07:16:00

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

Donat
19.06.2017
07:17:42

Евгений
19.06.2017
07:17:48

Google

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

Oleg
19.06.2017
07:18:32

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

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

Евгений
19.06.2017
07:22:23

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 люди подключились им удается лучше общий язык найти

Евгений
19.06.2017
08:33:02

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+ пакетов стоит то все ломается