
Valeriy
04.01.2018
13:27:15
Мне LYAH совсем не зашла, скучно и стиль учебника для младших классов. Beginning Haskell интересней идет, но местами кажется перегруженной всякими расширениями и разным синтаксисом

Anton
04.01.2018
14:12:07
А мне очень нравится Get programming in Haslell (или как то так) by Will Kurt (Manning) она не большая, практической направленности и каждая глава заканчивается кэпстоун проджектом с подробным описанием что к чему.

Kirill
04.01.2018
14:21:03
@qnikst вы на 8.2 ещё не переползали?
я тут под НГ занялся миграцией

Google

Alexander
04.01.2018
14:21:21
на одном проекте только
вроде все просто взлетело

Kirill
04.01.2018
14:21:40
и время компиляции прям никакое
ну и про баг который Дениса укусил я вроде писал перед НГ

Alexander
04.01.2018
14:36:17
ага
у нас тайплевел ада нету
что упрощает жизнь

Dmitry
04.01.2018
14:37:09
а как вы живете без тайплевел ада? сервант вполне себе тайплевел ад. ну т.е бывает хуже. но вот

Alexander
04.01.2018
14:42:36
серванта не было, до пары недель назад
сейчас есть но там 4 эндпоинта
ну больше но порядка 10, что совсем мало

Kirill
04.01.2018
14:49:21
тормоза основные почему-то не в тайплевел аде судя по всему
как ни странно в TH от персистента, хотя вопрос только ли TH виноват

Google

Alexander
04.01.2018
14:55:21
вот ТХ у нас много

Kirill
04.01.2018
14:56:59
ну вот например
янв 04 17:54:04 [72 of 91] Compiling Database.TLDR.Stats.Model ( src/Database/TLDR/Stats/Model.hs, .stack-work/dist/x86_64-linux-tinfo6/Cabal-2.0.1.0/build/Database/TLDR/Stats/Model.o )
янв 04 17:55:43 [73 of 91] Compiling Database.TLDR.Stats ( src/Database/TLDR/Stats.hs, .stack-work/dist/x86_64-linux-tinfo6/Cabal-2.0.1.0/build/Database/TLDR/Stats.o )
т.е. минута сорок
около 20 табличек
при этом есть ещё одна "моделька" примерно такого же объёма
и оно меньше секунды компилится

kana
04.01.2018
15:02:14
такие проблемы же только на каких-нибудь изолированный сборках, в деве же можно инкрементально?

Kirill
04.01.2018
15:06:44
расшифруй?

kana
04.01.2018
15:08:14
ну то есть не обязательно же в деве собирать модули, которые не поменялись (следовательно и TH не нужно перезапускать)?

Alexander
04.01.2018
15:11:52
когда разрабатываешь это не большая проблема, а проблема если только на CI

Kirill
04.01.2018
15:16:31
про CI и речь была
но вроде прогнал тот же билд и дельта не такая катастрофическая на том пакете
4 минуты на 8.2 против 3 на 8.0
при том что заявляли о том, что GHC стал быстрее

A64m
04.01.2018
15:28:53
ну на их бенчмарках стал, а качество бенчмарков там и по времени компиляции и по производительности кода оставляют желать много лучшего, скажем так
а каких-то заметных изменений (в меньшую сторону) времени компиляции я бы не ждал

Denis
04.01.2018
16:10:00

Aleksey
04.01.2018
19:01:34
В Эльме будет больше дичи, походу

Google

GNU/Maybe
04.01.2018
19:11:22
Это шутка, я надеюсь?

Pig
04.01.2018
19:22:00
На самом деле нужны только пары, пустые кортежи и немножко синтаксического сахара

Aleksey
04.01.2018
19:28:38

GNU/Maybe
04.01.2018
19:30:41

Dmitry
04.01.2018
19:31:33
> На самом деле нужны только пары, пустые кортежи и немножко синтаксического сахара
еще хэшмапа, 21 век же

Vitaly
04.01.2018
19:39:46
Пары это синтаксический сахар над лямбдой двух аргументов же

GNU/Maybe
04.01.2018
19:53:10
@qnikst спам?

Alexander
04.01.2018
20:14:38
fixed

GNU/Maybe
04.01.2018
20:16:31
?

Val
04.01.2018
21:20:45
А как правильно написать ф-ю, которая будет:
1. Запрашивать ввод через getLine
2. Сверять его с условием (x == 1, например). Если неверно - на п.1
3. Если верно - вернуть число 2

Anatolii
04.01.2018
21:34:35
Было бы хорошо скинуть что-то что уже есть в наличии
А тут бы уже подсказали что поправить

Anatolii
04.01.2018
21:35:07
А то так сложно что-то сказать кроме как готовое написать

Val
04.01.2018
21:54:18
У меня из готового только свои исходники на Python есть :D Пытаюсь это же на Хаскеле переписать, чтобы посмотреть как оно выглядеть будет

Антон
04.01.2018
21:57:51
Оно так не работает. В лоб алгоритм перенести, конечно, можно, но выглядеть будет так себе

Val
04.01.2018
22:02:10
module Main where
import Control.Monad (unless)
prompt :: IO ()
prompt = do
putStrLn "Enter 1 or 2:"
l <- getLine
unless (l == "1" || l == "2") $ do
putStrLn "Wrong number."
prompt
putStrLn $ "Your number is " ++ l
main = prompt
Вроде того. Только в последнем выводе все введённые значения выводятся. Грубо говоря я пытаюсь понять, как без привычного while это сделать
Переписал на
module Main where
prompt :: IO ()
prompt = do
putStrLn "Enter 1 or 2:"
l <- getLine
if l == "1" || l == "2"
then
putStrLn $ "Your number is " ++ l
else do
putStrLn "Wrong number.\n"
prompt
main = prompt
Теперь думаю, как не распечатать, а вернуть Int из ф-и prompt

kana
04.01.2018
22:12:24
pure l
prompt :: IO Int
prompt = do
putStrLn "Enter 1 or 2:"
l <- getLine
if l == "1" || l == "2"
then
pure $ read l
else do
putStrLn "Wrong number.\n"
prompt

Google

Sergey
04.01.2018
22:17:03
народ, как выбрать кортеж из списков кортежей, который является наибольшим по второму значению?

kana
04.01.2018
22:18:26
last . sortOn snd
head . reverse . sortOn snd
можно еще через maximumBy
maximumBy (compare `on` snd)

Val
04.01.2018
22:20:34
@kana_sama Спасибо, помогло

Dmitry
04.01.2018
22:20:40
Я бы не рекомендовал использовать функцию last. Лучше отсортировать по убыванию сразу.

Sergey
04.01.2018
22:24:20
для ясности, я делаю задание для определения буквы, которая чаще всего встречается и ignoreCase
mostFrequenceChar str = [(letter, count) | letter <- ['a'..'z'], let count = length (filter (== letter) lowerCaseStr), count > 0]
where lowerCaseStr = map (toLower) str
извиняюсь, не знаю, как красиво вставить код

Admin
ERROR: S client not available

Sergey
04.01.2018
22:25:27
на данный момент функция производит список кортежей с частотами (буква, частота)

Антон
04.01.2018
22:25:53
Обрамляй bactick'ами: `

kana
04.01.2018
22:26:03
тройными

Denis
04.01.2018
22:26:21

Антон
04.01.2018
22:26:25
тройными
Да. Это если на несколько строчек

Sergey
04.01.2018
22:26:46

Denis
04.01.2018
22:27:39
да
как-то так?
fmap (\x -> (head x, length x))$ group $ sort "test as test"

Sergey
04.01.2018
22:31:40
да, типо этого, только ignoreCase букв и только isAlpha

Pig
04.01.2018
22:31:52
слишком много $ и ни одного &&&

Антон
04.01.2018
22:32:04

Google

Sergey
04.01.2018
22:32:05
но в любом случае, спасибо, буду разбираться)

Denis
04.01.2018
22:35:39

Антон
04.01.2018
22:36:30

Denis
04.01.2018
22:37:43

Ignat
04.01.2018
22:43:14
наверное, разумнее сначала пофильтровать, а потом уже сортировать

Pig
04.01.2018
22:43:30
+
Ну и точек

Denis
04.01.2018
22:45:18
хватит придираться)

Pig
04.01.2018
22:45:33
Haskell без композиции — деньги на ветер

Denis
04.01.2018
22:46:55
хотите перформанс - юзайте multiset
MS.toOccurList
. MS.filter isAlpha
. MS.fromList
$ "test as test"

Ignat
04.01.2018
22:54:43
прикольн))

Val
04.01.2018
23:53:19
Клёвый язык. 2 часа пытаюсь Int от пользователя в ф-ю передать

Taras ?
04.01.2018
23:54:28
? прям как я вхожу в регулярки

Denis
04.01.2018
23:55:20

Val
04.01.2018
23:56:08
@xgrommx Там, судя по гуглу, довольно популярный запрос %) Как IO Int в Int перевести

Denis
04.01.2018
23:56:24

Ignat
04.01.2018
23:56:31
нужна какая-нибудь паста
про «ты СОВЕРШЕННО не понимаешь сути IO»

Denis
04.01.2018
23:57:05