@haskellru

Страница 727 из 1551
Denis
04.01.2018
23:58:57
ну монадки слишком абстрактны
в его случае он вообще поведения комонады хочет w a -> a

Ignat
04.01.2018
23:59:22
да ето так

ну если не скатываться совсем в оффтопик

то имея в do-нотации строку уровня myInt <- getIntFromSomewhere

Google
Ignat
05.01.2018
00:01:11
можно написать рядом let squaredInt = sqr myInt

видимо, этого @valsaven и хочет

Denis
05.01.2018
00:09:16
постановки задачи даже не увидел

Ignat
05.01.2018
00:10:18
ну «передать Int от пользователя в функцию»

звучит как «получить Int извне, преобразовать чистыми функциями и выплюнуть обратно»

насколько позволяют понять мои телепатические способности

Vasiliy
05.01.2018
00:12:11
лучше конечно разобраться почему, если интересно (https://t.me/haskell_learn), иначе это будет до следующей подобной "проблемы"

Val
05.01.2018
00:14:30
Да, спасибо за ссылку, пожалуй сначала что-то такое пройду лучше. С наскоку, видимо, не попрототипировать. На глупые проблемы слишком много времени уходит

Тем более там IO в самом конце))

Denis
05.01.2018
00:38:24
@valsaven вот тебе пример с передачей Int process = do n <- print "Input count of numbers " >> getLine case (readEitherSafe :: String -> Either String Int) n of Left s -> print s >> process Right v -> do xs <- T.for [1..v] $ \ i -> do print $ "Input number #" ++ show i getLine case traverse (readEitherSafe :: String -> Either String Int) xs of Left s -> print s Right xs'' -> print $ sum xs'' main :: IO () main = process

Artem
05.01.2018
11:33:33
Скажите, пожалуйста, кто-нибудь понимает, как поживают OverloadedRecordFields? после февраля 2017 (эпический бой про линзы https://github.com/ghc-proposals/ghc-proposals/pull/6) ничего не видно, в том числе, в ghc wiki

A64m
05.01.2018
11:36:56
Скажите, пожалуйста, кто-нибудь понимает, как поживают OverloadedRecordFields? после февраля 2017 (эпический бой про линзы https://github.com/ghc-proposals/ghc-proposals/pull/6) ничего не видно, в том числе, в ghc wiki
ну чтоб пользоваться ORF-машинерией для выбора геттеров леблами нужно свой сиротский инстанс определять, можно конечно не пользоваться лейблами и писать геттеры с аннотацией типом-символом

т.е. механика орфовская из пропозала вся в 8.2 есть, только инстанс для лейблов не прошел

Google
Artem
05.01.2018
11:39:18
собственно вопрос, есть ли новости, когда и в каком виде пройдёт?

A64m
05.01.2018
11:39:30
но есть ли в этом смысл? сам функционал у ORF довольно убогий, не лучше ли какой-нибудь generic-lens использовать?

собственно вопрос, есть ли новости, когда и в каком виде пройдёт?
нет, новостей никаких нет, никто над этим не работает

ну, вернее, можно предположить что работа Гендри над абстрактными линзами это часть работы по ORF

Artem
05.01.2018
11:41:30
я не хотел бы обсуждать линзы: изначально ORF рекламировался, как более гибкий механизм геттеров (условно, избавление от требования уникальности имён). Разница с линзами такая, что геттеры это entry-level средство Haskell, в то время как линзы это что угодно,но не entry-level (называйте advance или ка квам нравится)

Artem
05.01.2018
11:43:18
ну, это же полу решение, пользоваться ими как раньше нельзя

(Duplicate)

A64m
05.01.2018
11:45:14
геттерами как функциями нельзя (без аннотации типа, там такой убогий близорукий TDNR), а в пм с вайлдкартами можно, я так их всегда восновном и использовал

а роу-полиморфизм для геттеров из ORF в 8.2 и сам по себе не энтрилевельный, там уже что с линзами что без линз. Без линз просто убого все и неудобно

Artem
05.01.2018
11:46:51
да, меня интересует использование как функциями (собственно, название "геттер" это в первую очередь и подразумевает с моей точки зрения)

A64m
05.01.2018
11:47:38
ну вот чтоб использовать как геттер надо сиротский инстанс в приложении объявить

Artem
05.01.2018
11:47:42
роу-полиморфизм не нужно понимать новичку чтобы этим пользоваться, как не нужно понимать внутреннее устройство GHC, чтобы им что-то компилировать

да, вопрос был про то, когда это требование будет снято и какие первые шаги на когда намечены, ведь это всё было в начальном плане, как я понимаю

A64m
05.01.2018
11:48:52
не нужно, но сигнатуры и типы в ошибках нужно как-то понимать (не обязательно глубоко) линзами тоже не приходя в сознание можно пользоваться с теми же оговорками

да, вопрос был про то, когда это требование будет снято и какие первые шаги на когда намечены, ведь это всё было в начальном плане, как я понимаю
никогда. в первоначальном плане это было, но инстанс не успел в 8.0, а до 8.2 уже кучу библиотек использующих лейблы понаписали, значительную часть из них этот инстанс сломал бы, общественность растревожилась и инстанс заклевала. Конец истории

ну, может можно протащить сиротский инстанс в отдельном модуле в base, который все равно в библиотеках не используешь, также можно и подругому ORF сделать, но вроде никто не делает

ORF Гендри и так раза 4 делал прежде чем он в нынешнем виде попал в 8.2, я что-то сомневаюсь, что 5й раз будет делать

Artem
05.01.2018
11:55:38
последнее что видно от него на эту тему это подпиливание DRF (октябрь 2017) https://github.com/ghc-proposals/ghc-proposals/pull/84

ну вот чтоб использовать как геттер надо сиротский инстанс в приложении объявить
а пример, кстати, есть где-то в общедоступном месте? я вот искал и не нашёл. Там instance IsLabel нужен?

Google
A64m
05.01.2018
11:57:35
последнее что видно от него на эту тему это подпиливание DRF (октябрь 2017) https://github.com/ghc-proposals/ghc-proposals/pull/84
да, но это никак не улучшает ситуацию с геттерами (наоборот, ухудшает)

{-# LANGUAGE AllowAmbiguousTypes , FlexibleInstances , MultiParamTypeClasses , ScopedTypeVariables , TypeApplications , DuplicateRecordFields , OverloadedLabels , FlexibleContexts #-} module Records where import GHC.OverloadedLabels import GHC.Records instance HasField x r a => IsLabel x (r -> a) where fromLabel = getField @x как-то так это должно все выглядеть

Artem
05.01.2018
12:14:55
{-# LANGUAGE AllowAmbiguousTypes , FlexibleInstances , MultiParamTypeClasses , ScopedTypeVariables , TypeApplications , DuplicateRecordFields , OverloadedLabels , FlexibleContexts #-} module Records where import GHC.OverloadedLabels import GHC.Records instance HasField x r a => IsLabel x (r -> a) where fromLabel = getField @x как-то так это должно все выглядеть
о, здорово, спасибо! примера на видном месте так и не нашёл :( кстати, опытным путём установлено, что AllowAmbiguousTypes, OverloadedLabels и FlexibleContexts можно опустить; тем не менее, выглядит, конечно, печально…

получилось вот как-то так: {-# LANGUAGE FlexibleInstances , MultiParamTypeClasses , ScopedTypeVariables , TypeApplications , DuplicateRecordFields , OverloadedLabels #-} import GHC.OverloadedLabels import GHC.Records data Person = MkPerson { name :: String } data Dog = MkDog { name :: String } instance HasField x r a => IsLabel x (r -> a) where fromLabel = getField @x bark :: Dog -> IO () bark d = putStrLn $ "Arrg from " ++ #name d main = bark $ MkDog "Spike"

A64m
05.01.2018
12:16:34
ну часть расширений нужна только в модуле где инстанс объявлен для самого объявления, часть наоборот для того чтоб рекорды использовать, для инстанса не нужных

OverloadedLabels как раз нужны там где соотв. синтаксис используется

Artem
05.01.2018
12:18:48
в примере выше же есть #name или речь о каком-то другом синтаксисе?

A64m
05.01.2018
12:19:48
в примере выше же есть #name или речь о каком-то другом синтаксисе?
есть, так что не должно без OverloadedLabels компилироваться

Artem
05.01.2018
12:19:59
ну вот компилируется…

A64m
05.01.2018
12:20:19
наверное просто ранее скомпилированное работает или что-то вроде

Artem
05.01.2018
12:23:16
да, извиняюсь, это я в GHCi пробовал с включённым флагом

Антон
05.01.2018
15:53:10
Ребят, я дико извиняюсь, но что это за лейблы и как они связаны с линзами?

A64m
05.01.2018
16:05:42
Ребят, я дико извиняюсь, но что это за лейблы и как они связаны с линзами?
синтаксис #foo который рассахаривается в вызов метода класса fromLabel @"foo" т.е. можно написать инстанс который будет линзу для поля с именем foo или геттер как в примере выше подставлять

Artem
05.01.2018
16:26:03
Ребят, я дико извиняюсь, но что это за лейблы и как они связаны с линзами?
более подробное объяснение тут https://github.com/ghc-proposals/ghc-proposals/pull/6#issuecomment-276150270

Abbath
05.01.2018
23:49:21
Нас 600

Alex
05.01.2018
23:53:57
Нас 600
элита ?

Dmitry
06.01.2018
08:51:34
давайте всё-таки поговорим о том, когда не стрёмно использовать type family , а не data family

иногда они нужны

есть какие-то best practices / или заметки, что избегать в каких случаях

Google
Alexander
06.01.2018
08:54:55
я почти никогда не использую data family

Dmitry
06.01.2018
08:58:15
ну помимо ассоциированных?

или ты даже и в ассоциированные делаешь type family, а потом везде прокси таскаешь или type applications ?

так-то понятно, что без data family удобнее было бы.

Sergey
06.01.2018
09:28:32
народ, haskell же не делает откаты, как Prolog?

Dmitry
06.01.2018
09:38:16
а пролог делает откаты? надо его внедрить в госсектор

Hot
06.01.2018
09:44:37
Подскажите, пожалуйста, правильно ли я понимаю работу с SQLite в Haskell при помощи sqlite-simple (https://github.com/nurpax/sqlite-simple). Создаём АДТ (data), который будет отображать одну запись в отдельно взятой таблице нашей БД. Создаём инстанс тайпкласса FromRow для этого АДТ, в котором реализуем функцию для преобразования SQL-записи в этот АДТ. Можете, пожалуйста, исправить и/или дополнить то, что я сказал?

Alexander
06.01.2018
09:48:05
народ, haskell же не делает откаты, как Prolog?
нет, паттерн матчинг строго линейный

Sergey
06.01.2018
09:48:53
нет, паттерн матчинг строго линейный
то есть, первый, который подошел, тот и отработает, да?

Hot
06.01.2018
09:49:02
Да

Admin
ERROR: S client not available

Sergey
06.01.2018
09:49:07
супер) спасибо)

Hot
06.01.2018
09:50:55
Ясно, спасибо. Наверное я всё же где-то налажал с определениями/описаниями?

Dmitry
06.01.2018
10:01:52
на текущий момент какой самый быстрый и норм. работающий бинарный сериализатор есть?

нужен что бы 1) сдампить объект 2) посчитать хэш 3) использовать как ключ

т.е версионность не нужна, например

https://hackage.haskell.org/package/store - ок, например?

Alexander
06.01.2018
10:03:35
store/cvor

cbor

Google
Alexander
06.01.2018
10:03:46
один из этих

Dmitry
06.01.2018
10:04:03
вы что используете?

и как давно

Hot
06.01.2018
10:04:10
За cvor и cbor стреляешь в упор?

A64m
06.01.2018
10:04:17
cbor называется сериалайз же

Alexander
06.01.2018
10:04:37
я не помню, когда использовали то cbor был

сейчас мы store юзаем, оно под наши данные лучше точно

+ у нас только trusted source и мы их прямо во внешний мир не отдаем, и многие vector-like

Dmitry
06.01.2018
10:06:15
ну мне вообще просто хэш посчитать от чего-нибудь.

Alexander
06.01.2018
10:06:41
от сериализованного представления норм?

Dmitry
06.01.2018
10:07:27
ну, да.

Alexander
06.01.2018
10:07:35
store аллоцирует всю байтостроку, но это ж норм?

Dmitry
06.01.2018
10:07:49
объекты маленькие

пока что.

Alexander
06.01.2018
10:08:08
если медленно считается думать как мемоизировать

Dmitry
06.01.2018
10:08:27
пока что кажется что это пофиг, ботлнек будет не здесь

Alexander
06.01.2018
10:08:32
наверное с компактами можно?

ну да

разумно

Dmitry
06.01.2018
10:08:50
я их не умею, но наверное сейчас лучше не запариваться и оптимизировать, когда прижмет

сейчас просто надо взять то, что в на 01.2018 считается ок сериализатором

Alexander
06.01.2018
10:09:21
store норм

A64m
06.01.2018
10:09:29
что-то мне кажется компакты не самая хорошая идея чтоб хеш считать

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