
Alexander
02.04.2018
17:23:51
как ты отдашь его в си?
и как ты собираешься в си с ним работать
вопросы не риторические

Nick
02.04.2018
17:24:27
ну зная примерный layout в памяти, почему нельзя с ним работать?

Google

Alexander
02.04.2018
17:24:38
зная примерный - нельзя
зная точный - можно

Nick
02.04.2018
17:24:50
ок, зная точный)

Alexander
02.04.2018
17:24:59
ты знаешь точный layout?
можно через compact-ы

Leonid
02.04.2018
17:25:23
сомнительно и через компакты

Alexander
02.04.2018
17:25:54
вообще обычные haskell объекты unpinned
и если unsafe FFI call, или передаешь данные не через # ссылки, то их могут переместить
даже с unsafe надо передавать #

Nick
02.04.2018
17:26:35

Alexander
02.04.2018
17:26:36
если ты не знаешь что такое kind # то не надо так делать

Denis
02.04.2018
17:26:45
задача непонятна для начала, звучит как будто хочется очень странного

Alexander
02.04.2018
17:26:51
да

Google

Nick
02.04.2018
17:26:59
Эта задача в вакууме

Alexander
02.04.2018
17:27:04
просто тут отвечают, что ты этого не хочешь
особенное если в вакууме
=)
но вообще, если хочешь работать с haskell heap, то тебе нужно класть объекты в compact region
тогда зная представление объектов на куче ты можешь с ними работать
но, тут есть сложность, это не питон или кложа
подключить haskell.h где будут хедеры для всех структур не получится
поэтому нужно будет читать мануалы ghc, разбирать все эти указатели и т.п.
и не знаю как гарантировать ABI
в общем так себе задача, я бы не решился
учитывая что складывание в компакт это копирование структуры

Denis
02.04.2018
17:29:47
главный вопрос вообще зачем это делать

Alexander
02.04.2018
17:29:49
это должен быть достаточно интересный алгоритм для которого прыжок в си для работы с деревом на haskell даст ощутимый бонус
because I can
например, вполне валидное желание

Denis
02.04.2018
17:30:15
разве что

Alexander
02.04.2018
17:30:35
но, я предпочитаю заниматься because I can когда я знаю почти все из области

Nick
02.04.2018
17:31:11

Denis
02.04.2018
17:31:11
есть опасность because I can't

Google

Alexander
02.04.2018
17:31:18
@gurinderu доклад советую посмотреть, сможет снять ряд вопросов я думаю
я конечно не очень весело рассказываю

Denis
02.04.2018
17:32:05
ой-ой
а я не могу сделать ForallF C m, если C - тайп синоним
кажется приплыли

Leonid
02.04.2018
17:32:42
flexiblecontexts?

Imants
02.04.2018
17:32:42
как ты отдашь его в си?
Можно сериализовать, а в С соответственно десер. И обратно точно также.
Т.е., передавать бин.
Можно ведь так?

Denis
02.04.2018
17:32:46
хотя можно через класс

Nick
02.04.2018
17:33:04

Alexander
02.04.2018
17:33:40
и ответ упростится

Leonid
02.04.2018
17:44:33
А колбэки обратно в хаскель не могут же быть с замыканием, да?

Imants
02.04.2018
17:45:44
Ещё ни разу не вызывал C из H. Наверное, unpinned.
Как удобнее или надёжнее, если бин небольшой, и памяти хватает?

Alexander
02.04.2018
17:47:46
что значит "наверное unpinned"?
вообще если что-то передаешь в си, то нужно в pinned писать
чтобы данные не уехали
это или bytestring или mallocPinnedBytearray и вся эта компания
если делать unsafe call и передавать unlifted данные #, то тоже норм

Google

Alexander
02.04.2018
17:49:49
но это из разряда "хочется очень странного и прострелить ногу"
кстати, сериализовать и с этим работать - это стандртная штука

Leonid
02.04.2018
17:51:07
почему нет?
Хм, указатель будет запинен а замыкание нет?

Nick
02.04.2018
17:51:47
а замыкание это ж Function ptr, наверное тоже все ок будет

Alexander
02.04.2018
17:51:51
ты ж ForeingPtr отдавать будешь
через makeWrapper которое делается
Function ptr да
https://wiki.haskell.org/GHC/Using_the_FFI#Callbacks_into_Haskell_from_foreign_code

Imants
02.04.2018
17:57:49
А
http://book.realworldhaskell.org/read/interfacing-with-c-the-ffi.html
намекает как-то на необходимость в pinned?
Или это другая тема?

Alexander
02.04.2018
18:01:52
что-то не вижу, что там до этого доходит
там про енумы и превращение в си типы
я по той ссылке что выше и user manual в GHC читал

Imants
02.04.2018
18:09:47
Попробую примеры по C FFI из RW - из любопытства.
Но уже не сегодня.

Alexander
02.04.2018
18:11:09
сейчас проще взять inline-c и не думать

Imants
02.04.2018
18:22:02
https://hackage.haskell.org/package/inline-c
- на всякий случай. Я не сразу понял, что это - либа.

kana
02.04.2018
19:39:31

Alexander
02.04.2018
19:40:03
но уже не такой успешный
где продакшн и n2o
не-не-не

kana
02.04.2018
19:41:05
ого, n2o это его, действительно успешный

Google

Denis
02.04.2018
19:43:13
как бы Максим на месте не сидит)
https://www.nynja.biz/
https://www.nynja.biz/our-team/

Namdak
02.04.2018
19:51:24
Сохацкого звали?

Anton
02.04.2018
19:53:00
?

Taras ?
02.04.2018
20:02:45
?

Vladimir
02.04.2018
20:44:01
?

Denis
03.04.2018
03:56:26
Ух ты, и HoTTaBitch тут! Приветствую!


Theta
03.04.2018
04:30:16
Товарищи, ведь ничего не мешает спискам быть строгими? Просто... мне на собеседлове кажется втирали дичь якобы не все типы данных можно определить строго, только конечные и привели в пример список.
Якобы его строго нельзя определить так как заранее он не известен и может быть бесконечен.
Насколько мне известно, строгие типы данных, в отличии от ленивых, не могут иметь заглушку в стиле undefined и должны быть вычислены сразу.
Однонаправленный список. Каждая следующая голова ссылается на хвост, состоящий из голов. Что мешает минимальному хвосту и рекурсивно соответственно, всему хвосту быть сразу определённым, при образовании строгого списка? Ничего.
data List a = Nil | !a :! !(List a)
и пример тому
https://hackage.haskell.org/package/strict-base-0.4.0.0/docs/Data-Strict-List.html
Товарищи, мне ведь дичь втирали, да?
Что это? Грёбанное манипулятивное интервью чтобы посеять неуверенность?
Или я не прав?
Уважаемые гуру, пожалуйста, прокомментируйте, что думаете?


Dmitry
03.04.2018
04:55:08
Кажется, путаница в определении "строгости"
Haskell/Strictness - Wikibooks, open books for an open world
https://en.m.wikibooks.org/wiki/Haskell/Strictness

Theta
03.04.2018
04:56:41
Обсуждали именно строгие типы данных