Size: a a a

2021 February 10

O

Ortofax in Haskell
[BRM]White Rabbit
Так в хаскеле односвязные или двусвязные списки? Просто для односвязного вот это вот будет стоить O(n+m), а для двусвязного просто O(n), где n - аргумент функции, а m - колво элемов в листе.
источник

O

Ortofax in Haskell
это хоть и дерево, но доступ с концов очень дешёвый
источник

[

[BRM]White Rabbit in Haskell
кана
чистые массивы как буфферы на памяти дорого увеличивать, в итоге все равно какие-то слайсы в виде деревьев нужны
>чистые массивы, как буферы памяти дорого увеличивать

Но в основном используются именно такие реализации) Просто надо понимать, что в коллекции довольно редко надо добавлять 100500 элементов, а после сразу же удалять. Но когда такие кейсы вознакают, то тут клнечно, без списка никуда.
источник

к

кана in Haskell
[BRM]White Rabbit
т.е. чисто теоретически можно написать свой двусвязный с такими же красивыми операциями в матчинге?
по поводу красивых матчингов - тут почти в любом случае ответ да, потому что есть две фичи:
- ViewPatterns, которые позволят матчить результат функции на значение в месте паттерна:
f (getPrev -> Just x) = x
- PatternSynonyms, которые позволят спрятать сложные вью-паттерны внутрь синтаксиса конструкторов

так что какая бы страшная реализация не была, зачастую есть возможность сделать достаточно красивый апи вот этими вот штуками
источник

ЗП

Зигохистоморфный Пре... in Haskell
кана
по поводу красивых матчингов - тут почти в любом случае ответ да, потому что есть две фичи:
- ViewPatterns, которые позволят матчить результат функции на значение в месте паттерна:
f (getPrev -> Just x) = x
- PatternSynonyms, которые позволят спрятать сложные вью-паттерны внутрь синтаксиса конструкторов

так что какая бы страшная реализация не была, зачастую есть возможность сделать достаточно красивый апи вот этими вот штуками
можно еще призмами
источник

AA

A64m AL256m qn<co... in Haskell
Ortofax
это хоть и дерево, но доступ с концов очень дешёвый
это контейнер, который практически не используется примерно никогда, потому что имеет какие-то преимущества в полутора экзотических случаях
источник

AA

A64m AL256m qn<co... in Haskell
[BRM]White Rabbit
>чистые массивы, как буферы памяти дорого увеличивать

Но в основном используются именно такие реализации) Просто надо понимать, что в коллекции довольно редко надо добавлять 100500 элементов, а после сразу же удалять. Но когда такие кейсы вознакают, то тут клнечно, без списка никуда.
лол, когда все функции принимают и возвращают коллекции в основном такие кейсы и возникают, каждому циколу в императивном программировании соотвествует такой кейс в функциональном
источник

MK

Maxim Koltsov in Haskell
а обсудили уже, что паттерн матчинг в питоне будет сразу с or-patterns?
источник

к

кана in Haskell
да что там обсуждать-то
источник

к

кана in Haskell
даже нет смысла обсуждать, почему в хаскеле до сих пор нет, и наверное и не будет
источник

к

кана in Haskell
просто принять и страдать
источник

K

Kir in Haskell
Maxim Koltsov
а обсудили уже, что паттерн матчинг в питоне будет сразу с or-patterns?
А можно ссылку на PEP?
источник

MK

Maxim Koltsov in Haskell
Kir
А можно ссылку на PEP?
источник

к

кана in Haskell
там два даже
https://www.python.org/dev/peps/pep-0635/

еще
источник

к

кана in Haskell
а, это просто какие-то интексированные статьи, а не пропосалы
источник

к

кана in Haskell
case ["go", ("north" | "south" | "east" | "west")]:

там даже вложенность
источник

ВЩ

Взщз Щщщхш in Haskell
и guardы
источник

к

кана in Haskell
и вот такие штуки еще, вместо гардов как в эрланге, что тоже удобно

case {"text": str(message), "color": str(c)}:
источник

K

Kir in Haskell
кана
и вот такие штуки еще, вместо гардов как в эрланге, что тоже удобно

case {"text": str(message), "color": str(c)}:
Foo (str -> Just message) (str -> Just c) -> ...
источник

к

кана in Haskell
ну, если бы я такое решил использовать массово, я бы точно сделал синоним и было бы как в питоне
источник