Size: a a a

2021 April 11

AA

A64m AL256m qn<co... in Haskell
однозначность рассахаривания обычно просто квалификацией делается
источник

AA

A64m AL256m qn<co... in Haskell
емнип с первого репорта
источник

к

кана in Haskell
значит нужен пропосал!
источник

AA

A64m AL256m qn<co... in Haskell
но может не с первого драфта репорта
источник

AA

A64m AL256m qn<co... in Haskell
обидно что ель не отсканил драфты. емелисты-то свои отсканировали Ж(((
источник

A

Aleksandr Khristenko in Haskell
А может кто-то подсказать, как в vscode пользоватся форматерами кода через hls?
источник

к

кана in Haskell
поставить плагин, поставить нужный форматтер, выбрать форматтер в настройках плагина, опционально поставить "формат он сейв"
источник

KV

Kirill Valyavin in Haskell
А в хлс разве не встроено?
источник

A

Aleksandr Khristenko in Haskell
Ага, получилось.
источник

A

Aleksandr Khristenko in Haskell
Там вроде встроена просто возможность дергать нужный форматер и правильно обрабатывать его результаты. Просто я что-то нигде пошагового how-to как это делать не находил.
источник

к

кана in Haskell
ну вроде плагин не скачивает форматтеры, форматирование это вроде бы фича плагина а не hls-а
источник

MK

Maxim Koltsov in Haskell
в хлс же вроде вкомпилены некоторые форматеры
источник

MK

Maxim Koltsov in Haskell
не как внешние тулзы
источник

MK

Maxim Koltsov in Haskell
а может нет
источник

A

Aleksandr Khristenko in Haskell
Насколько я сейчас понял когда мы форматим мы посылаем команду на форматирование hls, а он в зависимости от настройки форматера уже делает.
источник

A

Aleksandr Khristenko in Haskell
А функцию вида
test :: Monoid a => [a] -> [a] -> Maybe a
test (x : _) (x' : _) = Just $ mappend x x'
test _ _ = Nothing

можно как-то как лямбду красиво переписать?
источник

к

кана in Haskell
\xs ys -> case (xs, ys) of
 (x : _, y: _) -> Just (x <> y)
 _ -> Nothing

curry \case
 (x:_, y:_) -> Just (x <> y)
 _ -> Nothing

\case x : _ -> \case {y : _ -> Just (x <> y); [] -> Nothing}; [] -> const Nothing

\xs ys -> do
 x <- listToMaybe xs
 y <- listToMaybe ys
 pure (x <> y)

\xs ys -> liftA2 (<>) (listToMaybe xs) (listToMaybe ys)

liftA2 (<>) `on` listToMaybe
источник

A

Aleksandr Khristenko in Haskell
Спасибо. Мне конкретно было интересно, как в виде лямбды записиывать функции в которых неколько веток паттерн матчинга по  нескольким параметрам.
В итоге варианты выглядят не особо, проще создавать локальную функцию видимо.
А первый и второй вариант как-то на скорость влияет? Там ведь идет оборачивание/разворачивание в тупл вроде.
источник

D

Dreamerinnoise in Haskell
case
источник

к

кана in Haskell
нет, не влияют, это заворачивание с некоторой вероятностью может даже не произойти (но не факт во втором случае, не вижу INLINE у curry)

но в первом случае я почти уверен что кортеж не будет создаваться, хаскель умеет оптимизировать такой код

case Nothing of
 Nothing -> 1
 _ -> 2

в просто 1, скорее всего и с кортежами справится
источник