
Quet
16.02.2017
23:15:22
шанс контрибутнуть в обе библиотеки ))

Alexander
16.02.2017
23:15:48
в highlevel так точно

Quet
16.02.2017
23:15:58
а то прям such haskell.. две либы и обе сырые

Alexander
16.02.2017
23:16:14
ну raw я доволен, ей хотя бы пользоваться можно

Google

Quet
16.02.2017
23:16:16
хотя конечно lmdb не то чтоб супер-популярная штука

Alexander
16.02.2017
23:16:47
c highlevel непонятно что делать
я понимаю даже почему они сделали так, как сделали

Quet
16.02.2017
23:17:07
почему?

Alexander
16.02.2017
23:17:23
они пытались абстрагироваться и подстроить под свои кейсы
апи у lmdb вообще такой что там удобно писать свои прокси под свои задачи
а как его сделать обобщенно - непонятно

Quet
16.02.2017
23:18:17
задачи сделать так чтобы через хаскельный интерфейс были видны все фичи у них не было?

Alexander
16.02.2017
23:18:39
для этого raw
не похоже что у highlevel эта задача была

Quet
16.02.2017
23:19:27
надо взять от highlevel все хорошее и притащить в тот другой пакет )

Alexander
16.02.2017
23:20:03
надо придумать, что делать с Multi$Type и Type
которые там дублируются не по делу

Google

Alexander
16.02.2017
23:20:26
и тупым дефолтам. типа если env RW то и транзакция RW
если транзакция RW то именованные базы мы создаем

Quet
16.02.2017
23:21:28
а они делают Multi для DUP баз что ли?

Alexander
16.02.2017
23:22:55
да
причем у них курсор тоже Multi и обычный
неожиданно

Quet
16.02.2017
23:24:10
кунг-фу на типах у авторов оказалось недостаточно сильное ))

Alexander
16.02.2017
23:24:18
угу
или например есть на уровне типов кайнд ReadWrite / ReadOnly
оно логично
но почему-то все RO операции не полиморфные по нему
хотя они и в RO и RW работать могут

Quet
16.02.2017
23:25:14
сделай issue авторам с предложением ) мож там активные люди
@qnikst слушай, а где у них ffi делается? чет смотрю либу и никаких там foreign import

Alexander
16.02.2017
23:32:23
foreign import ccall safe "lmdb.h mdb_get" _mdb_get :: Ptr MDB_txn -> MDB_dbi -> Ptr MDB_val -> Ptr MDB_val -> IO CInt
https://hackage.haskell.org/package/lmdb-0.2.5/docs/src/Database-LMDB-Raw.html#mdb_get

Quet
16.02.2017
23:32:44
нене, а в хайлевеле?

Alexander
16.02.2017
23:32:46
кстати ccall лучше не надо лучше capi
хайлевел же на основе лоу-левела

Quet
16.02.2017
23:33:17
аа, блин

Google

Quet
16.02.2017
23:34:00
тогда точно начинать допиливать с лоу левела

Alexander
16.02.2017
23:37:03
от лоу-левела я хочу чего-то больше похожего на zerocopy
совсем-то не получится т.к. модель объектов в памяти другая
влоть до того как компакты придут

Ruslan
17.02.2017
06:04:40
Всем доброго утра
кто-нибудь работал с shake? использовал add/askOracle?

Anatolii
17.02.2017
15:26:28
кто так быстро среагировал на спам?:)

Dmitry
17.02.2017
15:29:15
тут удобно, всё делается одним правым кликом

Quet
17.02.2017
18:21:42
@voidlizard не участвуешь в специальной олимпиаде? http://maxim.livejournal.com/503548.html

Dmitry
17.02.2017
18:22:08
неа
В соответствии с новым законопроектом сборщики мусора в работающих на территории РФ Java-машинах обязаны хранить данные в течение полугода.
интересно, хаскела это касается или нет

Misha
17.02.2017
20:47:58
конечно, теперь надо будет все вычисления заворачивать в специальную монаду, которая все будет будет отправлять товарищу майору

Igor
17.02.2017
20:50:47
лол

Vladislav
17.02.2017
20:53:17
В Советском Союзе Хаскелл бы запретили, потому что ленивые вычисления противоречат идеологии максизма-ленинизма.

Serghei
17.02.2017
22:01:19
https://www.evernote.com/l/ALH5zThdaxBEeqn5nZ4yCHVlyAojBHaSCb0B/image.png

Anatolii
17.02.2017
22:05:17

Misha
17.02.2017
22:14:44
FsbT наверное
моноид

Dmitry
18.02.2017
09:21:19
А нету ли у нас чего-нибудь подобного xpath по семантике для запросов по ADT ? Ну, что-то типа линз, только создаваемое в рантайме?

Google

Alexander
18.02.2017
09:51:08
Либы нету, при желании можно накостылять, но или это будет сильно небезопасно, или придется typeable или даже инфу от generic таскать чтобы имена полей ловить

Dmitry
18.02.2017
09:51:34
зайдем с другой стороны
ну почему небезопасно? если у нас есть какой-то
a
, нам надо сделать какой-то
query a "/employees[*]/name"
ну и что такого, если не сматчится? вернем
Nothing
или так:
query a "/employees[name="Вася"]/salary"

Admin
ERROR: S client not available

Alexander
18.02.2017
09:54:18
Тебе нужно будет чуть-ли не по raw памяти бегать

Dmitry
18.02.2017
09:54:29
но почему?

Alexander
18.02.2017
09:54:31
А хорошо я с Dynamic можно наверное
Map Name TypeRep и cast к нужному типу

Dmitry
18.02.2017
09:55:05
что если для такого доступа достаточно какой-то там тайпкласс заимплементить для всех типов, которые в это входят? может, в сторону
Generic
или
Data
надо копнуть?

Alexander
18.02.2017
09:57:17
Data я вот кстати не знаю, может там изкоробки есть
Generic чтобы генерировать поля для языка и функции
Я бы так накостылял, но я у компа только завтра буду

Dmitry
18.02.2017
09:58:38
посмотрю, что за Dynamic

Alexander
18.02.2017
09:59:06
Это просто data D = forall x.typeable x => D x

Dmitry
18.02.2017
09:59:18
т.е я подобное делал для валидации модели TR-069 но там кажется был один тип

Alexander
18.02.2017
09:59:20
+-
Слушай, я точно попробую такое запилить, оно мне может быть нужно

Dmitry
18.02.2017
10:01:14
да оно всем нужно, это ж будет linq для х-ла
удивительно, что нет такого

Google

Alexander
18.02.2017
10:04:36
Я знаю как сделать для фиксированного числа типов
Как совсем linq сделать я не знаю, без плагина
Особенно с учетом того что есть параметрические типы и гадты

Dmitry
18.02.2017
10:06:14
но если оно будет работать наподобие uniplate (universe) - то это же вполне ок

Мерлин
18.02.2017
11:43:57
[last news]
Marvin, a Haskell framework for writing chat bots (inspired by hubot)

Alexander
18.02.2017
11:55:09
@voidlizard там просто проблема, что если не таскать с собой ссылку на typeable, то на руках есть только pointer в infotable
Там есть инфа о полях, причем том pointer это или прямо так
Поидее если держать ссылку infotable -> typeable то может что-нибудь и можно сделать и то не факт
Т.к. информацию о параметрические структурах придется чудом восстанавливать

Quet
18.02.2017
12:29:14

Alexander
18.02.2017
15:02:53
А сегодня кто до идрису дошел?

Serghei
18.02.2017
15:06:27
Ребта помогите понять, где я туплю. Есть
fluc :: [Double] -> Double
fluc [] = 0.0
fluc xs = (mp - av) / mp * 100 where
mp = maximum xs
av = sum xs / length xs
Поразумевается использовать как
fluc [1.0,2.0,3.0,4.0,5.0,1.0,2.0,3.0]
Но я еще не до конца разобрался с типами. Почему я получаю в ghci
• Couldn't match expected type ‘Double’ with actual type ‘Int’
• In the second argument of ‘(/)’, namely ‘length xs’
In the expression: sum xs / length xs
In an equation for ‘av’: av = sum xs / length xs
почему в результате деления Double на Double я получаю Int ?

? animufag ?
18.02.2017
15:07:56
:t (/)
там есть отдельный оператор для плавающей точки