@haskellru

Страница 1381 из 1551
Index
31.07.2018
16:05:05
Я смотрел. И не понял, чего он хочет
Насколько я вижу тут хочется абстракцию не по значением типа, а по конструкторам типа

Aleksey
31.07.2018
16:05:32
странное

Index
31.07.2018
16:07:00
да

Google
Index
31.07.2018
16:07:35
Это в паттернах

В вызовах такого нет

Terminator
31.07.2018
16:08:29
@dtulyakov будет жить. Поприветствуем!

Yuriy
31.07.2018
16:08:32
а, ну, человек этого не хочет на самом деле

Pig
31.07.2018
16:09:14
А почему бы просто не объяснить новичку что у Nothing и Just разные типы?

Aleksey
31.07.2018
16:10:06
Скучно же

Index
31.07.2018
16:14:16
в h аргумент Int -> Maybe Int, в h2 аргумент Maybe Int

вопрос был про то, как объединить эти функции

Алексей Ayaye :)
31.07.2018
16:20:46
всё-таки интересно, зачем. ведь конструктор либо явно при вызове h задается и тогда можно его и использовать. либо приходит как параметр, но почему там же и значение типа Maybe Int не построить?

Alexander
31.07.2018
16:43:47
@qnikst в случае с <$ надо будет 5 <$ Just (), а не 5 <$ Just, это не то же самое
у Just тип не Maybe Int, так что не подходит там опечатка и имелось ввиду Just{}

в любом случае если обощить тип так чтобы и Maybe a и a->Maybe a подходило, то проматчить по реализации функции (Just) мы не сможем

Google
Alexander
31.07.2018
16:46:32
кот в wai хорошо разбирается?

у меня неочевидный вопрос есть

Lazzlo
31.07.2018
17:01:46
всё-таки интересно, зачем. ведь конструктор либо явно при вызове h задается и тогда можно его и использовать. либо приходит как параметр, но почему там же и значение типа Maybe Int не построить?
Дальше я хотел узнать как сделать так чтобы моя функция h могла так делать не только с Maybe но и с другими штуками с кайндом * -> * ... Или типа того, хз. Может по другому признаку типа data Maybe a = Just a | Nothing - из Прелюда data SomeThingElse a = Some a | Thing и чтоб: h 5 Just == Just 5 h 7 Nithing == Nothing и одновременно h 6 Some == Some 6 h 8 Thing == Thing {Если что я новичёк, я не знаю зачем я это буду применять в практических целях, мне просто интересно можно ли так на Haskell или почему так нельзя и что для этого нужно сдлеать с языком. Повторю что мне просто захотелось и мне интересно}

Alexander
31.07.2018
17:26:38
а с (->) a она что делать будет?

кайнд подходит

но я повторюсь, x <$ m, делает максимально похожее

оно же fmap (const x) m

для любого функтора все значения внутри будут заменены на твое если их можно заменить

соответственно для SomeThing тоже будет работать если ты derive Functor сделаешь

Alexander
31.07.2018
17:29:02
что не включал?

Lazzlo
31.07.2018
17:29:13
derive Functor

Alexander
31.07.2018
17:29:28
можешь руками инстанс написать.. просто так печатать меньше

Lazzlo
31.07.2018
17:30:51
ну да, под включить я имел ввиду дописать derive Functor, но даже на это мне не хватило времени проверить, так как я уже собирался уходить

Alexander
31.07.2018
17:33:56
в общем по непримененному к аргументам конструктору матчить не получится, т.к это функция

по Just{} конструктор и не важно какие аргументы - можно, и так заработает

сделать код, который будет работать с разными типами данных - нужна дополнительная информация о том, как это должно происходить

например математическая структура и Functor подходит

можно использовать Generic и смотреть, что у тебя ожидаемая структура типв

Google
Alexander
31.07.2018
17:35:52
и писать generic метод (никогда таким не занимался)

Lazzlo
31.07.2018
17:36:36
Понял, спасибо большое!

Ilya
31.07.2018
18:30:32
правда у меня не получилось избежать лишних аннотаций типов, применение выходит довольно громоздким

Aleksey
31.07.2018
18:54:46
Тайпкласс то получится уж больно похожий на Functor

Alexander
31.07.2018
19:39:24
не не, он хочет чтобы и (a -> f a) и f a можно было матчить одновременно, если предположить что запись корректна

а так да - просто функтор

Ilya
31.07.2018
19:56:50
Admin
ERROR: S client not available

Alexander
31.07.2018
20:07:41
Ilya
31.07.2018
20:13:08
очень неочевидное утверждение
достаточно очевидное после вот этого поста https://t.me/haskellru/138022

h должна работать "со штуками кайндом * -> *" а значить матчить там нечего

Алексей Ayaye :)
31.07.2018
20:14:49
по аналогии с ооп это какая-то виртуализация конструктора, которая не нужна, потому что в момент вызова конкретный конструктор известен.

Ilya
31.07.2018
20:16:58
Alexander
31.07.2018
20:25:04
имхо

Ilya
31.07.2018
20:25:22
окей, может быть

Alexander
31.07.2018
20:25:35
вот как эта функция будет работать с (->) а?

или Const b a

Google
Ilya
31.07.2018
20:26:25
вот как эта функция будет работать с (->) а?
смотря какой инстанс считать главнее:)

(если через классы делать)

Alexander
31.07.2018
20:26:39
или T a = N l U a l Q a l P a a

Слава
31.07.2018
20:28:08
или T a = N l U a l Q a l P a a
ВсЕм ПриВетиК в ЭтОм ЧаТиКе! (выглядит ужасно)

Ilya
31.07.2018
20:28:33
тут нет дилеммы

Alexander
31.07.2018
20:28:45
как, что делать если там Q?

или P?

Ilya
31.07.2018
20:29:53
хз, мне интереснее что делать, если передали "Just что-то" а не "Just"

раз можем Nothing передать, значит можем и "Just что-то"

или P?
проверку типов завалим пускай

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