
A
20.12.2017
08:07:01
хотя это всё роли, я вот и программист и так уж случилось сейчас немного девопс ) ну начальник меня так назвал пару раз )

Donat
20.12.2017
08:07:09
Во всяком случае если на вакансии посмотреть большинство именно такой стек используют
Кстати, заметил, что в этом чате очень уж часто возникают холивары на тему терминологии.

Yuriy
20.12.2017
08:08:19
я видел человека, который сам себе в поле "должность" вписал "devops", став таким образом первым девопсом яндекса

Google

A
20.12.2017
08:08:39
?

Donat
20.12.2017
08:08:53
?

kana
20.12.2017
08:13:08

Donat
20.12.2017
08:18:14
Не смотрел пока

kana
20.12.2017
08:22:52
Определение термина - это тип, в то время как сам термин - терм этого типа (тавтология). Наличие термина для определения как доказательство верности определения (правда система аксиом тут довольно противоречива)
Называйте это изоморфизмом Каны

A
20.12.2017
08:29:24
а в хаскеле нельзя программировать как в лиспе? )

Dmitry
20.12.2017
08:30:18
(if (eq (x) 1) "A" 42)
?
давно не брал я в руки скобок

Alexander
20.12.2017
08:34:27
в лиспе нельзя программировать как в лиспе
иначе это не лисп

Dmitry
20.12.2017
08:34:52
там стринговые литералы-то есть в таком виде?
а то опять не угадал. сколько раз писал глючный недоделанный лисп, но никак не запомню, как оно там в настоящих лиспах

Google

Dmitry
20.12.2017
08:35:24
в expconf-е сть

Aragaer
20.12.2017
08:41:43
ну только не (x), а просто x
потому что иначе это вызов функции x

A64m
20.12.2017
08:50:49

andretshurotshka?❄️кде
20.12.2017
08:51:37
call/cc

A
20.12.2017
08:51:52
call/cc

andretshurotshka?❄️кде
20.12.2017
08:52:28
?

A64m
20.12.2017
08:55:28
т.е. как в схеме?
скоро будет специальный ghc, который компилирует медленнее ghc (eta скомпилированная eta)

Alexander
20.12.2017
09:33:23
eta блин..

Hot
20.12.2017
09:37:04
Объясните пожалуйста, что означает
{-# LANGUAGE OverloadedStrings #-}
в некоторых исходниках Haskell. Очень часто встречается.

Denis
20.12.2017
09:38:28
О, только что читал, он превращает все строки, например "foo" в вызов функции fromString "foo"

Alexander
20.12.2017
09:38:29
строковые литералы конвертируются в fromString "literal"

Denis
20.12.2017
09:39:03
и если есть инстанс тайпкласса то все скомпилится

Index
20.12.2017
09:40:05
Так же как с числовыми происходит и fromInteger

Hot
20.12.2017
09:51:00
А, понял, спасибо.

Евгений
20.12.2017
09:52:06

? animufag ?
20.12.2017
09:54:01
или id в случае стринга

Евгений
20.12.2017
09:55:00
Грустно :(

Google

Alexander
20.12.2017
09:59:00
@elemir90 как повезёт
без оптимизаций в рантайме, с оптимизациями может и в заинлайнить все
ну и констрантные строки все равно оптимизируются хорошо

kana
20.12.2017
10:10:04

Alexander
20.12.2017
10:11:15
в либе какой-нить синоним/семейство, я чета такого не помню

A64m
20.12.2017
10:11:18
это вроде ~ с более общим кайндом

Alexander
20.12.2017
10:11:21
а
круто

Index
20.12.2017
10:21:57
~~ это гетерогенное равенство типов
`(a :: k1) ~ (b :: k2)`
если k1 /= k2, kind error. если a /= b, constraint unsatisfied
`(a :: k1) ~~ (b :: k2)`
если k1 /= k2, constraint unsatisfied. если a /= b, constraint unsatisfied
Если проводить аналогию на тёрмах
`(a :: t1) == (b :: t2)`
если t1 / = t2, type error. если a /= b, False
f ::
(Typeable t1, Typeable t2, Eq t1) =>
t1 -> t2 -> Bool
f a b = case testEquality (typeOf a) (typeOf b) of
Nothing -> False
Just Refl -> a == b
если t1 /= t2, False. если a/=b, False

kana
20.12.2017
10:31:37
ага, понятно, спасибо

Denis
20.12.2017
10:41:25
У меня в .ghci есть строчка :set -XOverloadedStrings. При этом stack build репортит ошибки компиляции. Если выполняю stack ghci - все окей. Почему так?

Alexander
20.12.2017
10:42:01
потому, что ExtendedDefaultRules
в общем ghci подбирает типы по умолчанию, обычная сборка - нет

A64m
20.12.2017
10:43:35
из объяснения не понятно, включено ли расширение при обычной сборке вообще

Alexander
20.12.2017
10:44:11
а ну да

Denis
20.12.2017
10:44:14
Где посмотреть?

Alexander
20.12.2017
10:44:33
{-# LANGUAGE OverloadedStrings #-} в заголовке файла
или default-extensions: OverloadedStrings в кабал файле

Google

Denis
20.12.2017
10:44:45
Там нет
там тоже нет

? animufag ?
20.12.2017
10:46:10
не хочешь включить?

Denis
20.12.2017
10:49:37
Видимо хочу, я и хотел это понять, где и что надо добавить

Oleg
20.12.2017
10:50:57
или default-extensions: OverloadedStrings в кабал файле

Denis
20.12.2017
10:51:32
да понял я )
спасибо, все ок

Alexander
20.12.2017
10:55:43
я люблю per file добавлять

Admin
ERROR: S client not available

Alexander
20.12.2017
10:55:52
тогда оно с ghci совместимо всегда

Denis
20.12.2017
10:56:16
А я и не против добавлять, просто хотел разобраться почему так происходит

kana
20.12.2017
10:57:32
потому что :set -X в .ghci включает расширения только в ghci, поэтому и код в ghci работает. А во время сборки .ghci конечно не читается
{-# LANGUAGE #-} включает в том файле, в котором он находится, и во время сборки

Denis
20.12.2017
10:58:16

Yuriy
20.12.2017
11:39:19

kana
20.12.2017
11:40:00
ну так термин (уже существущий) - объект, подходящий под определение, нет?

Yuriy
20.12.2017
11:42:27
термин — просто идентификатор определения
слово "козяблик" — просто имя для множество козябликов

Index
20.12.2017
11:43:29
вот бы сейчас дескриптивность/прескриптивность языка пообсуждать

Yuriy
20.12.2017
11:43:51

Denis
20.12.2017
11:47:25

Google

Denis
20.12.2017
11:47:45
я per file добавляю если у меня один файл
далее в кабал

Index
20.12.2017
11:48:53
я думаю per file нормально для библиотек, но мучительно для приложений

Denis
20.12.2017
11:49:33
какая разница?
я наскидку только пару расширений могу назвать, которые периодически хочется отключить
может вот их per file, а остальное можно и поглобальнее

Index
20.12.2017
11:51:02
разница с организации процессов, в библиотеку может захотеть законтрибьютить человек, который в первый раз видит код, не обязательно знакомый со всеми расширениями, ему поможет этот список не втыкать три часа, почему что-то незнакомое компилится
а в default-extensions не каждый и заглянет
+ у некоторых тулинг ломается без этого перечня, что опять же вина тулинга, но контрибьютеров таким образом не хочется прогонять
еще это способ не заставлять людей изучать расширения, которые используются только в некоторых модулях
опять же, в приложении со стабильной командой это не нужно (пусть возьмут да изучат), для случайных контрибьютеров это барьер

Denis
20.12.2017
11:53:33
ну фиг знает, если у тебя в библиотеке SuperSayanExtensionPack, то per file мало поможет

Index
20.12.2017
11:55:49
если кто-то решит подправить этот 1 файл из 5, вот ему и не понадобится расширение новое изучать
а если код хорошо организован модульно, то есть шанс, что только 1 файл править и придется
не, ну понятно, что люди не так оперируют, мол "пойду изучу всё, что в default-extensions", но это может снизить потенциальный confusion
А про разный язык в каждом модуле это реально проблемно. Бывает включишь GADT-ы, а работающий до этого код ломается (потому что он на -XNoMonoLocalBinds полагался, который по умолчанию)
Или там со -XScopedTypeVariables

A64m
20.12.2017
12:02:45
ну потому что хаскель это два языка а не сколько сочетаний расширений, конечно

Index
20.12.2017
12:03:37
В общем для приложений очевидно лучше в default-extensions, а для библиотек я не знаю какой трейд-офф лучше.