Leonid 🦇
flexiblecontexts?
Anonymous
как ты отдашь его в си?
Можно сериализовать, а в С соответственно десер. И обратно точно также. Т.е., передавать бин. Можно ведь так?
Denis
хотя можно через класс
Alexander
Alexander
и ответ упростится
Leonid 🦇
А колбэки обратно в хаскель не могут же быть с замыканием, да?
Anonymous
Ещё ни разу не вызывал C из H. Наверное, unpinned. Как удобнее или надёжнее, если бин небольшой, и памяти хватает?
Alexander
что значит "наверное unpinned"?
Alexander
вообще если что-то передаешь в си, то нужно в pinned писать
Alexander
чтобы данные не уехали
Alexander
это или bytestring или mallocPinnedBytearray и вся эта компания
Alexander
если делать unsafe call и передавать unlifted данные #, то тоже норм
Alexander
но это из разряда "хочется очень странного и прострелить ногу"
Alexander
кстати, сериализовать и с этим работать - это стандртная штука
Leonid 🦇
почему нет?
Хм, указатель будет запинен а замыкание нет?
Anonymous
а замыкание это ж Function ptr, наверное тоже все ок будет
Alexander
ты ж ForeingPtr отдавать будешь
Alexander
через makeWrapper которое делается
Alexander
Function ptr да
Alexander
https://wiki.haskell.org/GHC/Using_the_FFI#Callbacks_into_Haskell_from_foreign_code
Anonymous
А http://book.realworldhaskell.org/read/interfacing-with-c-the-ffi.html намекает как-то на необходимость в pinned? Или это другая тема?
Alexander
что-то не вижу, что там до этого доходит
Alexander
там про енумы и превращение в си типы
Alexander
я по той ссылке что выше и user manual в GHC читал
Anonymous
Попробую примеры по C FFI из RW - из любопытства. Но уже не сегодня.
Alexander
сейчас проще взять inline-c и не думать
Anonymous
https://hackage.haskell.org/package/inline-c - на всякий случай. Я не сразу понял, что это - либа.
кана
а теперь что?
а теперь он все еще эрланг-программист
Alexander
но уже не такой успешный
Alexander
где продакшн и n2o
Alexander
не-не-не
кана
ого, n2o это его, действительно успешный
Зигохистоморфный
как бы Максим на месте не сидит)
Зигохистоморфный
https://www.nynja.biz/
Зигохистоморфный
https://www.nynja.biz/our-team/
Namdak
Сохацкого звали?
Antilopa
🙏
Taras 🦀
👍
Anonymous
🙏
Denis
Ух ты, и HoTTaBitch тут! Приветствую!
Theta
Товарищи, ведь ничего не мешает спискам быть строгими? Просто... мне на собеседлове кажется втирали дичь якобы не все типы данных можно определить строго, только конечные и привели в пример список. Якобы его строго нельзя определить так как заранее он не известен и может быть бесконечен. Насколько мне известно, строгие типы данных, в отличии от ленивых, не могут иметь заглушку в стиле undefined и должны быть вычислены сразу. Однонаправленный список. Каждая следующая голова ссылается на хвост, состоящий из голов. Что мешает минимальному хвосту и рекурсивно соответственно, всему хвосту быть сразу определённым, при образовании строгого списка? Ничего. data List a = Nil | !a :! !(List a) и пример тому https://hackage.haskell.org/package/strict-base-0.4.0.0/docs/Data-Strict-List.html Товарищи, мне ведь дичь втирали, да?
Theta
Что это? Грёбанное манипулятивное интервью чтобы посеять неуверенность?
Theta
Или я не прав?
Theta
Уважаемые гуру, пожалуйста, прокомментируйте, что думаете?
Dmitry
Кажется, путаница в определении "строгости"
Dmitry
Haskell/Strictness - Wikibooks, open books for an open world https://en.m.wikibooks.org/wiki/Haskell/Strictness
Theta
Обсуждали именно строгие типы данных
Theta
и ленивые
Vladimir
И в определении списка тоже путаница. Может интервьюер считал, что списки без [1,2..] -- не списки.
Theta
нет, такого в контексте не было...
Theta
Таке он сказал что и строки соответственно строгими не могут быть... по-моему O_o
Theta
так как строки основанны на списках
Theta
(впрочем не на списках же тоже можно сделать, лол)
Theta
(блин, вот что значит хреново спать перед собеседованием...)
Dmitry
Хм, а какое определение строгих типов? Что-то ненагугливается. Имеется ввиду строгая типизация? Ну так в Хаскеле она строгая.
Theta
Ну вот же например https://hackage.haskell.org/package/strict-types два слова стрикт и тайпс
Theta
А не, не много не то
Theta
Но реализацию строгого списка я скинул
Vladislav
В общем бесконечный список в стиле tie the knot можно и строгий сделать, а вот корекурсивный вроде [1, 2, ..] нельзя, наверное интервьер думал про второй тип списков
Theta
нет, он именно про принципиальную вохможность определения
Theta
data List a = Nil | !a :! !(List a)
Theta
вот
Theta
и типа это невозможно
Theta
грил
Vladislav
Ну это возможно конечно
Theta
пример взят из библиотеки по ссылке
Vladislav
Чего б этому быть невозможным, bang-и просто приводят к расстановке seq при паттерн-матчинге
Oleg
Примеры бесконечных https://wiki.haskell.org/Memoization#Efficient_tree_data_structure_for_maps_from_Int_to_somewhere https://hackage.haskell.org/package/Stream-0.4.7.2/docs/Data-Stream.html
Oleg
Возможно, собеседователь имел в виду второй пример
Theta
Чего б этому быть невозможным, bang-и просто приводят к расстановке seq при паттерн-матчинге
ну... по-моему в случае с типами данных это запрещает быть неопределёнными вложения в тип.
Theta
и мы не про примеры говорили
Theta
с ним
Theta
только конечные значения только хардкор
Vladislav
ну... по-моему в случае с типами данных это запрещает быть неопределёнными вложения в тип.
Ну оно запрещает за счёт seq. Иногда еще оптимизация срабатывает unpack strict fields