
Alexander
15.10.2017
12:26:08
@chshersh а ну если ещё и num то можно
но это только для цифирей
а со строками или т.п. уже не взлетит

A64m
15.10.2017
12:41:41
кто-нибудь вообще видел какие-то примеры использования этих нетипизированных списков, чтоб они хорошее впечатление производили?

Google

Dmitry
15.10.2017
12:43:02
чего это они нетипизированные?

A64m
15.10.2017
12:44:26
я понимаю, что они на самом деле монотипизированные
и вопрос в основном сводится к "кто-нибудь видел какие-то примеры на языках с одним типом, которые производили бы зорошее впечатление?"

Pig
15.10.2017
12:47:05
Что есть хорошее впечатление?

Dmitry
15.10.2017
12:47:47
IRL пришлось использовать экзистенциальные типы и даже RankNTypes в задаче, пожалуй, динамического полиморфизма - вывод API с общей сигнатурой. но разным поведением из сервантовских типов. еще пачка расширений, что бы типы выводились
насчет хорошего впечатления не уверен, но по другому было никак

A64m
15.10.2017
12:48:22
@greenest_pig когда не хочется этого больше никогда не видеть
@voidlizard я про примеры таких списков из дин.языков от их любителей

Dmitry
15.10.2017
12:50:23
ну тут был не список, но задача похожая на ту, которую приводят в примерах для этих списков - т.е тип толком неизвестен, но для него есть реализация определенных тайпклассов, поэтому можно вызывать их методы
конкретно списка не использовалось, при этом.

Pig
15.10.2017
12:51:26
То есть как это обычно делается в ООЯ.

Dmitry
15.10.2017
12:51:40
ага.
в хаскелле это боль.

Google

A64m
15.10.2017
12:53:47
это боль тогда, когда в операциях параметров этого неизвестного типа больше одного
когда один - еще сносно
но все равно надо бойлерплейт писать обычно
правда, проблема одного параметра и в ООП обычно есть, исключая всякую экзотику

Yuriy
15.10.2017
13:03:58

A64m
15.10.2017
13:05:13
@cblp_su в смысле, когда они как структурированный файл используются а ля жсон?

Yuriy
15.10.2017
13:05:45
да, как формат

A64m
15.10.2017
13:09:01
а в этом то случае какие преимущества у безтиповых языков? Там даже линзы не сделать вроде тех что для иксемеля и жсона в хаскеле есть? Даже элементарных удобств нет

Dmitry
15.10.2017
13:10:55
1) порог входа 2) простота реализации

Pig
15.10.2017
13:12:26
Секспы парсить просто.

A64m
15.10.2017
13:13:32
что в языке с типами их парсить сложнее что-ли?

illiatshurotshka❄️
15.10.2017
13:13:46
вектор с трейт объектами использовал в расте пару раз

Denis
15.10.2017
21:30:25
вопросик

A64m
15.10.2017
21:45:03
смотрю Park Bench Panel Session with #HaskellX Experts пурскриптофанат меня затроллил

kana
15.10.2017
21:46:58

A64m
15.10.2017
21:49:59
ну конечно, еще и антитуплофолдабелист закукареал.

Dmitry
15.10.2017
21:50:17
ситуацией с иде, что ли?

A64m
15.10.2017
21:50:33
нет

Denis
15.10.2017
21:51:01
вопрос отпал
но возник другой

Google

illiatshurotshka❄️
15.10.2017
21:54:53
да

A64m
15.10.2017
21:55:20
деперь про гипотетических БЕГИННЕРОВ еще
кажется, что хуже быть не может уже, но уже в следующую минуту ясно, что хуже всегда может быть


Denis
15.10.2017
21:56:26
есть такой код
data MyFreeF f a r = MyReturnF a | MyBindF (f r) deriving (Functor, Foldable, Traversable)
type MyFree f a = Fix(MyFreeF f a)
pattern MyReturn a = Fix (MyReturnF a)
pattern MyBind a = Fix (MyBindF a)
cataFix alg = alg . fmap (cataFix alg) . unfix
cataFixM f = (>>= f) . cataFix (traverse (>>= f))
liftF' c = MyBind (fmap MyReturn c)
retract' = cataFixM alg where
alg (MyReturnF a) = return a
alg (MyBindF as) = as
e = do
x <- liftF' [10, 20]
y <- liftF' [30, 40]
return $ x * y
retract' e
но я чот не догоню чего patterns не работают
• Couldn't match kind ‘* -> *’ with ‘*’
When matching the kind of ‘Fix’
• In a stmt of a 'do' block: x <- liftF' [10, 20]
In the expression:
do { x <- liftF' [10, 20];
y <- liftF' [30, 40];
return $ x * y }
In an equation for ‘e’:
e = do { x <- liftF' [10, ....];
y <- liftF' [30, ....];
return $ x * y }
если взять просто retract' $ liftF' [10] работает
не спрашивайте зачем) просто есть эксперимент что нам нужен только Fix


A64m
15.10.2017
21:56:46
но вообще нынешний haskellx неплохой

Denis
15.10.2017
22:03:36
попробовал сделать аппликатив, но
instance Functor f => Applicative (MyFree f) where
pure = MyReturn
MyReturn a <*> MyReturn b = MyReturn $ a b
MyReturn a <*> MyBind mb = MyBind $ fmap a <$> mb
MyBind ma <*> b = MyBind $ (<*> b) <$> ma
как это решить?
• The type synonym ‘MyFree’ should have 2 arguments, but has been given 1
• In the instance declaration for ‘Applicative (MyFree f)’

A64m
15.10.2017
22:03:38
а если сигнатуры для паттернов написать?

Denis
15.10.2017
22:06:33
не помогло
pattern MyReturn :: a -> MyFree f a
pattern MyReturn a = Fix (MyReturnF a)
pattern MyBind :: f (MyFree f a) -> MyFree f a
pattern MyBind a = Fix (MyBindF a)

A64m
15.10.2017
22:07:59
я не ожидал, что это заработает, я ожидал что сообшение об ошибках другое будет

Denis
15.10.2017
22:08:50
эм
что-то не так с паттернами
• Couldn't match kind ‘* -> *’ with ‘*’
When matching the kind of ‘Fix’
Expected type: Fix (MyFreeF [] a)
Actual type: MyFree [] a
• In a stmt of a 'do' block: x <- liftF' [10, 20]
In the expression:
do { x <- liftF' [10, 20];
y <- liftF' [30, 40];
return $ x * y }
In an equation for ‘e’:
e = do { x <- liftF' [10, ....];
y <- liftF' [30, ....];
return $ x * y }

A64m
15.10.2017
22:16:57
уже появились настальгирующие по hugs (нет, он ни в чем не лучше ghci, и не был никогда)

illiatshurotshka❄️
15.10.2017
22:17:28
ложь

Denis
15.10.2017
22:17:30
чот не могу понять как это решить

Dmitry
15.10.2017
22:17:35
а как же friendly error messages?

illiatshurotshka❄️
15.10.2017
22:17:42
он под андроидом запускается

Dmitry
15.10.2017
22:17:51
примеров правда никто никогда не приводит

illiatshurotshka❄️
15.10.2017
22:18:04
в термуксе

Google

Denis
15.10.2017
22:18:19

A64m
15.10.2017
22:18:29
это в хагсе-то? во всех имплементациях ФЯ что я видел ошибки еще хуже чем в ghc
к счастью, то что могло бы давать особо веселые ошибки на них обычно просто не написать, но в хагсе-то много чего написать можно
@xgrommx не знаю, я особо не вник.
ОМГ теперь кто-то рассказывает, что хагс оказывается интегрировал редактор и интерпретатор, причем пльцами показывает редактор над, видимо, окном репла
нет, не интегрировал
такая штука как он описывает была например для элис (это такой СМЛ)
но хагс просто вызывал редактор по команде так же как и ghci
Волков рассказывает про hasql, мол в моих бенчмарках 50% ГЦ, я открываю репозиторий на гитхабе, смотрю параметры которые он ртс передает
ну естественно, настройки ГЦ дефолтные
ну так что еще ожидать при дефолтных настройках-то?

Pig
15.10.2017
23:51:04
Бле, ну так это хаскель, а не жаба какая-нибудь, чтобы гц то тюнить, вот ещё.

? animufag ?
15.10.2017
23:52:49

A64m
15.10.2017
23:54:15
-A64m -qb0 -n4m очевидно же.
по крайнем мере до 8.2 так, начиная с него балансировка и чанки сами включатся если -A64m включить
@greenest_pig в жаве они по умолчанию сносные, про ghc такого не скажешь

Alexander
16.10.2017
07:04:28
@A64m_qb0 разве чанки тоже? вот -qb0 - да

A64m
16.10.2017
07:26:10
@qnikst https://git.haskell.org/ghc.git/commitdiff/85e81a850a3e79d965e18f267a0e0b1c4bc69fae
в комментариях вот к этому тикету https://ghc.haskell.org/trac/ghc/ticket/9221 история мееедленного и поэтапного торжества разума над безумием дефолтных настроек (до полного там еще далеко)

Yuriy
16.10.2017
08:44:52

Google

Leonid
16.10.2017
08:54:07
@A64m_qb0 обоснуй -qb0

Alex
16.10.2017
08:54:50
надо допилить идрис до состояния когда там можно будет тюнить тоталити чекер
а то один гц уже как то скучно

Leonid
16.10.2017
08:55:04
из-за большого nursery -n4m?

Denis
16.10.2017
09:14:01
в TH по Name как-нибудь можно распознать тайп синоним? Ничего такого не вижу, походу не умеет с ними работать.

Yuriy
16.10.2017
09:26:46

Alexander
16.10.2017
09:33:05
ну и если у тебя -A64m
будут у тебя это один ядро разбирать или все

IC
16.10.2017
09:34:22
@lonokhov -qb0 позволяет не тратить время на синхронизацию
есть ли порог ядер/объёмов, когда применение qb0 перестаёт быть выгодным? ?

illiatshurotshka❄️
16.10.2017
09:36:01
что будет если заменить в хаскеле Hask на Cohask?

IC
16.10.2017
09:36:26
@anarchostatist лисп

Alexander
16.10.2017
09:38:42
@icrbow эм?
без -qb0 один работает все ждут
с -qb0 все работают синхронизируясь при этом
затрат на синхронизацию в -qb0 строго больше : ]

A64m
16.10.2017
09:41:34
нет, без qb0 они все равно все работают, только балансировка плохая

Alexander
16.10.2017
09:42:11
на всех поровну?
а не из пула брать?

Leonid
16.10.2017
09:42:21
ну и я так понимаю -qg1 теперь вреден