kosc
Перед cabal build надо вручную зависимости накатить что ли?
Alexander
предполагается что кто-то из чатика ставил этот пакет, или попробует поставить или попытается угадать что за ошибка? ;)
Andrei
обычно в таких случаях да, но есть надежда, что нет
Антон
какой смысл решать какие-то задачи на хаскеле там, где сторонние библиотеки использовать нельзя?
Там не совсем все сторонние библиотеки использовать нельзя. Просто версия GHC, ЕМНИП, 7.6, так что некоторых библиотек может просто не быть
Антон
Кстати, благодаря решениям одной каты открыл для себя чудесный пакет Data.List.Split
Ю ли я? 🤔
Но ведь типы - часть кода...
A64m
> 7.6 тем более
Alexander
Использую flip, но не fix. ЧЯДНТ?
используешь flip но не fix
Alexander
это удобно когда в вопросе содержится ответ?
Антон
это удобно когда в вопросе содержится ответ?
Не всегда. Например, в вопросе "Каково решение уравнения Навье-Стокса" ответ, строго говоря, есть в вопросе, но он либо неизвестен (пока что), либо бесполезен
Антон
Кстати, в Haskell можно как-то передавать пруф того, что список конечен, без Liquid Haskell?
Alexander
Использую flip, но не fix. ЧЯДНТ?
атипичное развитие симптомов
A64m
что атипичного-то? flip многие используют, fix не то чтобы многие
Антон
Кто вы? бэкендер (не хаскелист) – 23 👍👍👍👍👍👍👍 53% хаскелист (получаю за хаскель деньги!) – 15 👍👍👍👍👍 35% фронтендер – 5 👍👍 12% 👥 43 people voted so far.
Вы так говорите, как будто варианты "фронтендер" и "бекендер" дают исчерпывающее покрытие множества программистов
кана
Остальным голосовать не обязательно
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
let xs = a : b : c : xs in xs ?
Этот вариант разве не эквивалентен cycle [a,b,c]?
Алексей
Да
Dmitry
А есть ли разница между cycle и cycle'? cycle' a = xs where xs = a ++ xs
Alexander
cycle xs = xs' where xs' = xs ++ xs' если что
Dmitry
Ой
Dmitry
Этот вариант разве не эквивалентен cycle [a,b,c]?
А в каком смысле тогда эти выражения эквивалентны?
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 f?
я вот считаю, что циклический список бесконечен, поэтому после fmap не должно быть уже ничего, даже звезд и черных дыр
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
А смысл?