Size: a a a

2020 May 18

к

кана in Haskell
источник

к

кана in Haskell
мне нужно поведение скорее как у бинда, но после filtered
ну в общем да, это невозможно сделать
источник

к

кана in Haskell
а есть какой-то state-аналог для ^..?
? t = gets (^.. t)
источник

I

Ilya in Haskell
Переношу вопрос отсюда: https://t.me/haskell_learn/55639
источник

к

кана in Haskell
посоветовал бы вариант 3
источник

к

кана in Haskell
ну точнее даже так, если типов нужно мало, то просто сделать N ньютайпов с смарт-конструкторами, без TH
источник

к

кана in Haskell
ну я просто не понял в чем выше его профит, когда руками выходит то же самое

newtype Positive = Positive Int

positive1 i = if i > 0 then pure $ Positive i else fail ".."
positive2 i = if i > 0 then Positive i else undefined
positive3 i = guard (i > 0) *> Positive i
источник

R

Roman in Haskell
кана
ну я просто не понял в чем выше его профит, когда руками выходит то же самое

newtype Positive = Positive Int

positive1 i = if i > 0 then pure $ Positive i else fail ".."
positive2 i = if i > 0 then Positive i else undefined
positive3 i = guard (i > 0) *> Positive i
статические гарантии
источник

к

кана in Haskell
от TH?
источник

R

Roman in Haskell
йеп
источник

к

кана in Haskell
а, я понял, это для литералов
источник

к

кана in Haskell
ну блин, литералы и так видны, как-то это все таки не стоит того, раз только для литералов
источник

I

Ilya in Haskell
кана
ну блин, литералы и так видны, как-то это все таки не стоит того, раз только для литералов
Кидать ошибку как positive2 в Вашем примере -- это не айс, потому что где потом эта ошибка стрельнет? Не тотальные функции -- вот эта вся тема. Надо заворачивать в MonadFail или MonadThrow.

Я могу представить себе преимущество от наворачивания Template Haskell поверх смарт-конструкторов только для тестов. Там полно мест где значения будут конструироваться из литералов и хочется избежать бесконечных fromJust:

$$(positiveTH 1) vs fromJust . positive $ 1

В боевом коде особых преимуществ TH поверх конструктора наверное нет -- там значения приходят снаружи и рантайм проверки не избежать.

Волковская библиотека позволяет делать рантайм проверки. В случае рантайм проверок вопрос остаётся: 1. Refined Positive Int vs 2. Смарт конструктор Positive vs 3. Int.

Я склоняюсь к 1, потому что предикаты можно композить:

Refined (And Positive Even) Int

А как композить типы с смарт-конструкторами не очень понятно.
источник

BK

Boris K in Haskell
Здравствуйте!
Решал ли кто-то в stack задачу импорта из файла строк UTF-8 с последующим корректным отображением данного файла в консоли при запуске исполняемого файла (например, .exe)?
источник

AV

Alexander Vershilov in Haskell
Проблема описанная выше гораздо более конкретная, недели описано. 1. stack ни при чём, совершенно неважно чем вы собираете исполняемый файл. 2. А вот OS может быть важной, судя по вопросу это Windows? 3. Если это Windows то может быть важен терминал и установка кодировки. 4 Но скорее важно то, как вы читаете и выводите файл, скорее всего чтение через Data.ByteString.readFile, а вывод через Data.Text.putStrLn с конвертацией через Data.Text.Encoding.decodeUtf8 вам поможет
источник

AV

Alexander Vershilov in Haskell
А так лучше написать OS, как читаете сейчас, как выводите или что видите вместо ожидаемого результата, а то может вы через print выводите
источник

BK

Boris K in Haskell
Alexander Vershilov
Проблема описанная выше гораздо более конкретная, недели описано. 1. stack ни при чём, совершенно неважно чем вы собираете исполняемый файл. 2. А вот OS может быть важной, судя по вопросу это Windows? 3. Если это Windows то может быть важен терминал и установка кодировки. 4 Но скорее важно то, как вы читаете и выводите файл, скорее всего чтение через Data.ByteString.readFile, а вывод через Data.Text.putStrLn с конвертацией через Data.Text.Encoding.decodeUtf8 вам поможет
А можно приложить файл?
У меня там несколько вариантов, но ни один не работает :(
источник

AV

Alexander Vershilov in Haskell
Можно положить на gist и дать на него ссылку
источник

BK

Boris K in Haskell
Там несколько строк...
источник

BK

Boris K in Haskell
Alexander Vershilov
Можно положить на gist и дать на него ссылку
Я сейчас ещё раз вариант с Data.Text.Encoding.decodeUtf8 опробую.
источник