
Abbath
08.10.2018
12:38:24

A64m
08.10.2018
12:38:38
F#

Alexander
08.10.2018
12:38:54

A64m
08.10.2018
12:39:14
да ничего хорошего

Google

Alexander
08.10.2018
12:39:50

Iva
08.10.2018
12:41:18

A64m
08.10.2018
12:42:06

Pavel
08.10.2018
12:48:28

kana
08.10.2018
12:50:25
Ну да, а вот в серьезный продакшен язык их впилить куда сложнее

A64m
08.10.2018
12:57:50
чем проще фича, тем больше людей хотят пообсуждать пару-тройку лет, ведь в или-паттернах-то каждый разбирается!
зато квантифайед констрейнтс пролетает через комитет за месяц в режиме
> no comments. But two +1 and otherwise silent
agreement. I conclude that we have reached positive consensus.
чет мутное, не охота разбираться, лучше промолчим - думают комитетчики

Abbath
08.10.2018
13:10:28
?
Вроде есть or-pattern на квазиквотах
http://hackage.haskell.org/package/OrPatterns

A64m
08.10.2018
13:22:18
сейчас моднее на плагинах делать

Terminator
08.10.2018
15:01:27
Timo будет жить. Поприветствуем!
@webuiuxdesigner будет жить. Поприветствуем!
@Neujaskre будет жить. Поприветствуем!

Google

Denis
08.10.2018
18:48:48
интересно, можно сделать частичное применение для тайпклассов?

kana
08.10.2018
18:51:55
ну да
возможно я не понял твой вопрос

Denis
08.10.2018
18:52:43
class B = A SomeType
class A x y ...

kana
08.10.2018
18:53:02
type B = A SomeType

Alexander
08.10.2018
18:53:03
можно, кметтомагией

Denis
08.10.2018
18:53:13
не тайпалиас
а полноценный тайпкласс

Alexander
08.10.2018
18:53:54
чтоб я сходу помнил

kana
08.10.2018
18:53:59

Alexander
08.10.2018
18:54:01
через вспомогательные класы
и type

Denis
08.10.2018
18:59:36
поясню более детально
data X a = ...
class A x y ...
fun :: x -> y
type B = A X
ах ConstraintKinds

kana
08.10.2018
19:02:07
хм, ну тут каинды не сходятся вроде

Denis
08.10.2018
19:03:06
а частичное применение я имею ввиду потом
instance B SomeType where
...
поэтому я и написал
class B = A X

Google

kana
08.10.2018
19:04:44
class A a b where
f :: a -> b
instance A Int String where
f = show
class A Int b => B b
instance A Int b => B b
g :: B String => Int -> String
g = f
?

Denis
08.10.2018
19:11:05
в инстансах B не будет виден метод f

kana
08.10.2018
19:11:13
будет

Denis
08.10.2018
19:11:29
ааа

kana
08.10.2018
19:11:30

Yuriy
08.10.2018
19:11:39

Denis
08.10.2018
19:11:39
ну ты взял и определил инстанс для A
а надо без определения инстансов для A

kana
08.10.2018
19:12:23
ну тогда вообще не понятно, что ты хочешь

Yuriy
08.10.2018
19:12:38

Denis
08.10.2018
19:13:01
считай это хитрым абстрактным классом

Yuriy
08.10.2018
19:14:12
не пойму, чем инстанс мешает

kana
08.10.2018
19:14:42
наверное круто было бы какой-то реальный пример использования с псевдокодом
а то пока звучит как бессмыслица, пока понял, что хочется что-то вроде открытой суммы классов
типа есть A и есть множество классов, которые в A

Denis
08.10.2018
19:16:57
data X a = ...
class Functor f => A f x where
someFn :: f x -> String
class B = A X
instance B SomeType where
someFn :: ?
нигде для A не делается инстансов

kana
08.10.2018
19:17:22
X у тебя Type->Type

Denis
08.10.2018
19:18:07
исправил

Google

kana
08.10.2018
19:18:48
а чего не подходит "семейство классов", где индекс - первый аргумент
то есть почему нельзя просто сделать instance A X SomeType?
подразумевается, что A X может быть много?
тогда можно добавить еще один индекс

Denis
08.10.2018
19:19:49
A X будет фиксирован
меняется только b
вот я и хочу что-то частичного применения для тайпклассов

kana
08.10.2018
19:21:11
то есть чтобы прояснить, никакой пользы от этого нет, ты просто хочешь более красивый код?
то есть не писать постоянно A X Int A X String
а просто B Int B String?

Denis
08.10.2018
19:22:33
в принципе да

kana
08.10.2018
19:22:33
или же в этом есть какая-то польза/мощность, которую я не понял?

Denis
08.10.2018
19:22:39
болерплейт не хочется

kana
08.10.2018
19:26:07
data X a deriving Functor
data A f x where
A :: Functor f
=> { someFn :: f x -> String }
-> A f x
type B = A X
bInstance1 :: B Int
bInstance1 = A{..} where
someFn _ = "1"
bInstance2 :: B String
bInstance2 = A{..} where
someFn _ = "2"
тогда единственная идея - сделать на явных словариках

Denis
08.10.2018
19:27:14

Yuriy
08.10.2018
19:50:08
фигнёй занимаетесь. лучше бы драйвер для Постгреса написали

A64m
08.10.2018
19:54:17
хотя бы хештаблицу нормальную

Imants
08.10.2018
20:35:06
А ghc-mod уже починили?

Dmitry
08.10.2018
20:35:30
А его надо чинить?
Есть же hie

Imants
08.10.2018
20:35:40
Для 8.6.1

Google

Imants
08.10.2018
20:36:22
А hie делает всё то же, что и ghc-mod?

Yura
08.10.2018
20:37:55
ghc-mod забросили
в пользу hie
т.е. его поддержка по остаточному принцыпу

Dmitry
08.10.2018
20:38:35
https://github.com/haskell/haskell-ide-engine/blob/master/README.md#this-is-not-yet-another-ghc-mod-or-ide-backend-project

A64m
08.10.2018
20:39:31
hie использует гхц-мод

Imants
08.10.2018
20:42:55
новую вилку ghc-mod?

A64m
08.10.2018
20:44:13
да, они его допиливают, хотя официальный уже давно не релизится

Abbath
08.10.2018
21:12:37
hie вроде даже правильно сделан

Евгений
08.10.2018
21:15:10
https://www.fpcomplete.com/blog/2018-haskell-survey-results
Рассказывают как все в восторге от хаскеля (кто пользуется)

Alexander
08.10.2018
21:52:03
не верю