kosc
Перед cabal build надо вручную зависимости накатить что ли?
Alexander
предполагается что кто-то из чатика ставил этот пакет, или попробует поставить или попытается угадать что за ошибка? ;)
Andrei
обычно в таких случаях да, но есть надежда, что нет
Антон
Кстати, благодаря решениям одной каты открыл для себя чудесный пакет Data.List.Split
Антон
Ю ли я? 🤔
Но ведь типы - часть кода...
A64m
> 7.6
тем более
Антон
Alexander
Alexander
это удобно когда в вопросе содержится ответ?
Антон
Кстати, в Haskell можно как-то передавать пруф того, что список конечен, без Liquid Haskell?
Alexander
A64m
что атипичного-то? flip многие используют, fix не то чтобы многие
Ilya
Антон
Антон
кана
кана
Остальным голосовать не обязательно
Alexander
если объявить бекендер = программист `difference фронтендер`
Ilya
но хочется
Alexander
то останутся только непрограммисты
Aragaer
а что такое бэкендер?
Aragaer
а то я постоянно встречаю эти термины, но не понимаю, что ж я такое должен делать, чтобы считаться бэкендером
Алексей
Знать секрет бэкенда, конечно
Aragaer
не знаю. Значит не бэкендер?
Alexander
я бэкендер, пишу на vue
Alexander
главное знать секрет
Aragaer
я пишу на си и на баше и мэйкфайлы еще. Вот это вот куда относится?
Alexander
devops
Слава
Dmitry
Из второго чатика
Dmitry
А на Haskell есть реализация циклического списка (хвост ссылается на голову)?
Dmitry
Где-то наверняка есть реализация через FFI к циклическому списку на C, но вообще, если тебе нужен список, по которому можно проходить много раз, используй cycle
Dmitry
А средствами языка возможно его соорудить?
Dmitry
Если не Haskell'я, то Core?
Алексей
let xs = a : b : c : xs in xs ?
A64m
можно, конечно
Alexander
можно конечно
Alexander
cycle и сооружает
Alexander
кстати, у студентов каких-то просили сделать doubly linked list
Alexander
вполне себе делается
Alexander
cycle кстати не то
Alexander
оно то, только по представлению памяти
Alexander
но если я хочу modify :: Int -> a -> S a -> S a
Alexander
то в списке созданным cycle случится не то, что ожидается
Алексей
Да
Dmitry
А есть ли разница между cycle и cycle'?
cycle' a = xs where xs = a ++ xs
Alexander
cycle xs = xs' where xs' = xs ++ xs' если что
Dmitry
Ой
Alexander
а есть статья на тему почему это так работает?
Dmitry
Я набрёл только на Thinking Functionally with Haskell
by Richard Bird
Dmitry
9.2 Cyclic list
Алексей
Или циклический лист должен оставаться циклическим после fmap f?
Alexander
{-# LANGUAGE BangPatterns #-}
data Cycle a = a :> Cycle a
| E (Cycle a)
fromList :: [a] -> Cycle a
fromList xs = let z = build z xs in z where
build e (x:xs) = x :> build e xs
build e [] = E e
period :: Cycle [a] -> Int
period = go 0 where
go !c (_:>as) = go (c+1) as
go c (E _) = c
tie :: Cycle a -> Cycle a -> Cycle a
tie x xs = let z = build z xs in z where
build z (_:>as) = build z as
build z (E _) = E z
insert' :: Int -> a -> Cycle a -> Cycle a
insert' i v xs = let z = build z i xs in z where
build e 0 t = v :> tie e t
build e n (E _) = error "FOOO"
build e n (a:>as) = a :> build e (n-1) as
Alexander
вот вам циклический список
Alexander
не рекомендую пользоваться такой структурой правда
Alexander
вот список выше останется циклическим после fmap
Alexander
какие вообще проблемы у fmap и бесконечного списка?!
Alexander
точнее не так, какие проблемы у fmap и *любого* списка в Haskell
Алексей
Ничего не будет, но потом, когда отфорсят весь список
Alexander
Alexander
ну давай напишу, что сложно чтоли
Alexander
да и ты напишешь без труда
Alexander
instance Functor Cycle where
fmap f xs = let z = build z xs in z where
build z (a :> as) = f a :> build z as
build z (E _) = E z
Alexander
законы проверять будешь?
Alexander
верю на слово!
Alexander
кстати вот как правильно написать Eq я даже не знаю
Alexander
наверное найти у обоих хвост и потом стравнивать до следующего?
Алексей
Можно собрать циклический список, который не будет выполнять. Надо прятать конструктор
Алексей
Думаю так
Alexander
да, конструктор тут спрятан должен быть
Dmitry
А E (Cycle a) что значит?
Alexander
кстати, а почему нельзя было просто сделать newtype конечного списка и прописать Functor и прочие инстансы?
Alexander
конструктор данных E с полем в котором значение типа Cycle a
Dmitry
А смысл?