Theta
хаскельский
Alexander
ну я не знаю что такое record хаскельный
Alexander
есть data
Theta
O_o
Theta
Named fields
Theta
часть юзают как я понял, чтобы создать данные о юзере том же например
Alexander
у нас есть ADT для adt можно делать named fields
Alexander
наличие или их отсутсвие ни о чем не говорит
Theta
ага
Theta
ты прав
Alexander
так могло бы быть data Maybe = Nothing | Just { fromJust :: a}
Alexander
в целом отличие структур лежит в том, могут ли для них быть разумные Foldable/Traversable/Applicative
Alexander
если да, то желательно чтобы структура была ленивой
Theta
ясно)
Theta
наличие или их отсутсвие ни о чем не говорит
просто как частный пример привёл. может не очень уместно.
Alexander
ну просто это не до конца понятно, видимо имелось ввиду структура с 1 конструктором и именованными полями
Theta
ага
Oleg
Не знаю, у кого как, но когда дело доходит до хакерранка и динпрог, для меня Map / IntMap очень даже control
Oleg
А то и Array
Theta
Ну... с учётом того что Map Foldable, Traversible, то почему бы и нет?
Theta
и интмап
Oleg
Ну... с учётом того что Map Foldable, Traversible, то почему бы и нет?
Ну ето шутка конеш была, я имел в виду просто мемоизацию хитрой рекурсии
Alexander
Map/IntMap - контрол конечно
Alexander
и Array/Vector
Alexander
в вот с Set так не прокатывает уже, т.к. у него более сложная структура, в смысле ограничений
Leonid 🦇
Мутное деление
Alexander
да, там есть сложности
кана
при том, что они очевидно были частью вопроса
не думаю, когда говорят про списки, с чего бы бесконечность учитывать?
Alexander
с того, что мы в haskell?
Alexander
т.е. я не вижу ничего странного с тем, что её учитывать
кана
с того, что мы в haskell?
по моему в таком случае нужно уточнять, что сравнение с хаскельным списком, я во время прочтения вопроса не воспринимал "список" как "хаскельный список" и бесконечность тоже не учитывал, очевидно
Leonid 🦇
@qnikst Async.waitEitherCatchCancel это как race же, да? т.е. грохнет второй тред? А то я что-то запутался
Cheese
на собеседованиях часто задают некорректные/неполные задачи, чтобы проверить умение определять корректность/полноту постановки задачи
Alexander
вот тут например
Alexander
>Есть тип Test Int32 (List Char). Могу ли я распаковать тип List?
Alexander
предположим, что там [Char]
кана
https://gist.github.com/klapaucius/1393078 - что это дает?
Alexander
let test = Test 1 (let x = x in x)
Cheese
что есть строгий список? для списка можно придумать промежуточные строгости — только по позвоночнику, только по элементам
Theta
Я думаю он имел в виду свою реализацию списка типа
Alexander
удачи в распаковке
кана
https://gist.github.com/klapaucius/1393078 - что это дает?
Ord сеты же все еще не выполняют функторные законы
Alexander
какие?
Alexander
fmap f . fmap g /= fmap (f.g) или fmap id = id ?
кана
F f . F g = F (f . g)
Alexander
пример?
Alexander
он вроде должен следовать из fmap id = id а он выполняется
Theta
удачи в распаковке
Удачи в распаковке того, что корректно не определено?
Oleg
\petrosyan_mode_on это смотря в какую категорию функтор
Theta
с точки зрения смысла
Alexander
Prelude> data Test = Test Int [Char] deriving (Show) Prelude> let t = Test 1 (let x = x in x) Prelude> t Test 1 "^CInterrupted.
Oleg
аааа не
Alexander
это ничем не отличается от data Test' = Test Int (List Char), если в List бесконечный список
Alexander
и там и там у нас боттом
Theta
удачи в распоковке того, что не вычисляется?
Theta
потому чт отам боттом?
Alexander
смотри в вопросе интервьюера что я процитировал он спрашивал можешь ли ты распаковать лист
Alexander
видимо предполагая ответ, что не можешь
Theta
Это уже по почте переписка с ним... не является интервью
Theta
Alexander
так вот я привел пример того, что даже с ленивым списком - не можешь
Alexander
т.е. вопрос несколько странный
Theta
А... ну... странный да. размытый
Theta
вот и я про что
Oleg
пример?
newtype Communism a = Communism{ getCommunism:: a} instance Eq (Communism a) where _ == _ = True instance Ord (Communism a) where _ `compare`_ = EQтогда Set.map getCommunism . Set.map Communism =/= Set.map (getCommunism . Communism)
Theta
Впрочем... всё-таки я смог) Prelude> data Test = Test Int [Char] deriving (Show) Prelude> let t = Test 1 (let x = x in x) Prelude> let Test _ a = t Prelude> a "
Theta
Или мы друг друга не поняли?
Theta
товарищ @qnikst )
kake
как мне изменить так чтоб слова в ворде не разрывались?
Theta
товарищ @qnikst )
короче, @qnikst я ему ответил что можем. В случае ленивой имплементации Test мы делаем это в любом случае, если List вычислен, а в случае неленивой... надо чтобы вычислено было всё. Честно не уверен что он хотел получить этим коротким вопросом но возможно это
Alexander
Или мы друг друга не поняли?
ну у тебя же ничего не напечаталось программа зависла
Theta
Ну... тип данных то извлёкся.
Alexander
тип это на этапе компиляции