Size: a a a

2020 November 09

KZ

Kirill Zaborsky in Haskell
тупо создать тмп+переименовать в пару строк не канает?
источник

MP

Misha Puzanov in Haskell
дураций вопрос, да

изначальная задача — атомарно переименовывать непустые директории, но этого вроде как сделать  нельзя. Другой вариант — возиться с симлинками и как-то там тоже делать все атомарно.
источник

MP

Misha Puzanov in Haskell
в прицнипе System.Posix.Files пойдет наверное
источник

MP

Misha Puzanov in Haskell
то есть да, вопрос не в пакете, вопрос в ФС и переносимости этого дела
источник

AV

Alexander Vershilov in Haskell
Ну кажется что решение с симлинками на всех posix платформах будет работать
источник

MP

Misha Puzanov in Haskell
Misha Puzanov
точнее даже так — мне надо атомарно перевесить симлинк с одной дириктории на другую
renamePath им делать же
источник

MP

Misha Puzanov in Haskell
Alexander Vershilov
Ну кажется что решение с симлинками на всех posix платформах будет работать
вроде да, надо сообразить как минимально хлопотно сделать
источник

к

кана in Haskell
> One of the most common and useful Haskell features is newtype. newtype is an ordinary data type with the name and a constructor. However, you can define a data type as newtype instead of data only if it has exactly one constructor with exactly one field.

агх, бесит
источник

к

кана in Haskell
почему "монада это шаурма" все шеймят, а "ньютайп это дата с одним конструтором и одни значением в нем" нет
источник

MK

Maxim Koltsov in Haskell
Ну вот, теперь шаурмы захотелось, спасибо
источник

A

Andrey in Haskell
Переслано от Andrey
монада - это борщевик
источник

MP

Misha Puzanov in Haskell
кана
почему "монада это шаурма" все шеймят, а "ньютайп это дата с одним конструтором и одни значением в нем" нет
нуачо
этим пониманием вполне можно пользоваться
источник

MP

Misha Puzanov in Haskell
хлинт например когда видит data T a = T a, говорит "у тебя тут один конструктор — сделай newtype"
источник

к

кана in Haskell
неверно говорит, выбор data/newtype должен быть чисто семантический, а не синтаксический
источник

O

Ortofax in Haskell
но что если нужен дополнительный лифт?
источник

к

кана in Haskell
а то сделаешь так newtype там где подразумевалась data, а потом нужно будет поле добавить, а какой-нибудь coerce уже сломался
источник

MP

Misha Puzanov in Haskell
кана
а то сделаешь так newtype там где подразумевалась data, а потом нужно будет поле добавить, а какой-нибудь coerce уже сломался
это-то да, но это уже сравнительно далекие последствия, а с буррито-монадой там просто сразу неправильно
источник

к

кана in Haskell
дык и тут неправильно, то что один конструктор это уже издержки выбора синтаксиса, когда общий синтаксис дата-типов решили натянуть на другую фичу

сделали бы другой синтаксис, который вообще никак не пересекался бы с data, то утверждение про "один конструктор" стало бы неверным, а фича-то та же все еще
источник

к

кана in Haskell
какой-нибудь

nominal type Value = Int

и чтобы в пределах модуля Value и Int коерсились неявно, пушто это просто алиас, а в других модулях уже нет

такой синтаксис правда еще больше увеличил бы число тайп-аннотаций, да и id-функций пришлось бы больше писать и экспортировать, так что уж лучше такой как есть.

Хотя с другой стороны кода от аннотации не сильно больше, но это пока параметров нет
f :: Value -> a
g :: Int -> a
g x = f (x :: Value)
и
g x = f (Value x)
а когда нужно будет полиморфную функцию вызывать, придется все аннотировать явно в каждом месте для обоих типов

но никаких конструкторов нет при этом, а единственность значения тут чисто из-за того, что алиас не может быть на большее число типов чем 1
источник

M

MrSmith in Haskell
Опшионал<Опшионал... И>...> как в языках функциональных решают задачу flattern такого, ну или контейнеры в лист и тд. Заранее спасибо (знакомый про зав типы говорит, я из с++ знаю метод через вариадик шаблоны или рекурсивный лукап)
источник