
Evgenij
08.09.2016
13:31:07
На гиттере ищи

Anatolii
08.09.2016
13:31:16
ну я уже нашел
это который же на митапе выступал?

Evgenij
08.09.2016
13:31:46
Да он самый

Google

Paul
13.09.2016
19:09:17
Город просыпается

Anatolii
13.09.2016
19:14:33
Товарищи, а кто тут с сервантом знаком
если мне из
эндпоинта нужно вернуть пустое боди
они предлагают NoContent ставить
а почему не () ?

Alexander
13.09.2016
20:23:09
т.к. при разных contenttype () не пустое?

Anatolii
13.09.2016
20:31:43
понятно, просто в хэндлерах не охота писать return NoContent
я так подоздерваю что у меня проблемы с
боди ошибок из-за контент тайпа
shortPassword =
err400
{ errBody = "Password should be at least 6 chars"
}
вот такая ошибка на клиент приходит просто 400 c пустым боди
и еще у меня такой вопрос
type UserLogin = "users" :> Capture "login" String
type UserLists = UserLogin :> "lists" :> Get '[JSON] [List]
я вот так попытался сделать, но наверное нельзя, или я что-то не так записал?

Alexander
13.09.2016
21:11:15
нельзя

Google

Anatolii
13.09.2016
21:12:02
я пока на эту магию с типами не смотрел еще, для меня это пока "магия" :(
а по поводу ошибки не подскажешь что может быть?
почему body не возвращается на UI
там конечно как-то странно оно
у них body это массив байт по сути
хотелось бы тоже как-то типизированно сделать
чтобы я дал свой типчик в ToJSON
*c ToJSON

Vladimir
14.09.2016
08:17:18
:>

melancholiac
14.09.2016
08:17:33
:3

Alexander
14.09.2016
08:48:50
отдаются байты. т.к. браузер отдает байты
ты делаешь свой типчик и инстансы с ToContentType FromContentType (не помню как имеено)
которые покажут как переводить тип в байтики и обратно

Anatolii
14.09.2016
08:56:19
ну да, я понимаю что можно сделать типы, просто TypeSafety теряется:)
ну и я строк упочему-то не смогу венуть
вернее не смог
а вот возвращаемый формат который я указываю в роуте как-то влияет на ошибку?

Alexander
14.09.2016
10:56:47
не понимаю почему теряется
в браузер могут уходить только байт
про последнее не знаю

Google

Anatolii
14.09.2016
10:57:16
я чуток попозже кину полный кусок кода
@qnikst вот хэндлер из которого я ошибку получить не могу
createUser
:: MonadIO m
=> User -> ExceptT TodoErr m NoContent
createUser u = do
liftIO $ print u
hoistEither $ checkUser u
return NoContent
checkUser :: User -> Either TodoErr ()
checkUser u = checkPassword u >> checkLogin u
checkLogin :: User -> Either TodoErr ()
checkLogin User {..}
| length login < minLoginLen = Left shortLogin
| otherwise = Right ()
checkPassword :: User -> Either TodoErr ()
checkPassword User {..}
| length password < minPasswordLen = Left shortPassword
| otherwise = Right ()
type TodoErr = ServantErr
shortLogin :: TodoErr
shortLogin =
err400
{ errBody = "login"
}
shortPassword :: TodoErr
shortPassword =
err400
{ errBody = "password"
}
точнее статус код получа.
а боди пустое

Alexander
14.09.2016
17:42:47
я попозже посмотрю, мне щас по работе овердофига сделать надо

Anatolii
14.09.2016
18:34:19
Спасибо, я уже сам тут поковырялся
моя вина была
DHC клиент которым я запросы делал боди не показывал
Там Lts 7.0 выкатили с ghc 8.0.1, уряяяя

SimpleX
15.09.2016
05:14:35
А с пакетами все ок? Там же какие то нововведения, ломающие совместимость
В смысле, в лтс все попало?

Anatolii
15.09.2016
05:16:01
Я вчера только новость прочесть, ну и я не пишу фултайм на хаскеле? пока ничего сказать не могу

Stas
17.09.2016
17:17:11
Привет! Посоветуйте литературу по хаскелю. Умею в плюсы03, джаву, котлин, скалу немного. Слушал в универе про разные выразительные системы типов на курсах функционального программирования и компиляторов, умею в лямбы, основы формальной логики. Работаю андроид разработчиком и грущу наследуя
хочу быстрее раздуплиться

Alex
17.09.2016
17:23:55

Stas
17.09.2016
17:24:57
препод писал на агда и коке, а мы грустили, что не умеем так-же

adam
17.09.2016
17:25:17
+ eopl, sicp, htdp, documentation

Ekin
17.09.2016
17:26:31
sicp rip

Stas
17.09.2016
17:27:08
на сколько я помню, в ней процедурный язык, и достаточно низкий уровень.

Google

Stas
17.09.2016
17:27:37
или меня уже тралят?

Ekin
17.09.2016
17:28:24
по хаскелю много книг сейчас. почти все хороши

Anatolii
17.09.2016
17:30:52
Haskell book самая свежая
Я себе составил список:
Learn haskell for a great good
RWH
Beginning Haskell
Parallel an concurrent haskell от Simon Marlow
Можешь пойти курсы на степике
Они мне в начале помогли


Darwin
17.09.2016
22:22:32
Привет! Посоветуйте литературу по хаскелю. Умею в плюсы03, джаву, котлин, скалу немного. Слушал в универе про разные выразительные системы типов на курсах функционального программирования и компиляторов, умею в лямбы, основы формальной логики. Работаю андроид разработчиком и грущу наследуя
я сам учусь потихоньку, для себя составил план: идти по http://www.cis.upenn.edu/~cis194/spring13/lectures.html (с домашними заданиями и обязательным чтением дополнительного — http://learnyouahaskell.com/starting-out + http://book.realworldhaskell.org/read/ , сам по себе курс довольно хардкорный), сейчас там другой чел новый курс читает, но пока только 3 лекции выложено: http://www.cis.upenn.edu/~cis194/fall16/lectures.html
Также рекомендую https://www.ohaskell.guide/ . Книга недописана, но то, что есть, доступно и хорошо.

Anatolii
18.09.2016
07:27:32
Завтра кстати курсы начинаются от Glasgow University https://www.futurelearn.com/courses/functional-programming-haskell/1/

Stas
18.09.2016
07:50:49
Спасибо за ответы

Aldar
18.09.2016
07:51:19
Там монады хоть есть?
В этом курсе от Glasgow University

Anatolii
18.09.2016
07:52:13
На курсах от степика точно есть

Aldar
18.09.2016
07:53:15
Не видел еще курса с монадными трансформерами)

Anatolii
18.09.2016
07:55:37
Таких я тоже не видел, но я думаю если с монадами тебя знакомят
То с мтл ты уже как-то справишься

Aldar
18.09.2016
07:58:30
да, наверное так думают, и курс не удлинять стараются

Anatolii
18.09.2016
08:38:57
Это скорее чтобы дать толчок к дальнейшему изучению
По-моему курсы по хаскелю можно бесконечно вести
Товарищи, у меня тут вопрос возник
написал себе вот такую функцию

Google

Anatolii
18.09.2016
16:17:24
[User -> Either MyErr ()] -> User -> Either MyErr ()
сам
есть много проверок состояния юзера
вот таких функций: User -> Either MyErr ()
хотелось как-то их просто в список собрать
и чтобы явно не передавать юзера в каждую
check :: [User -> Either TodoErr ()] -> User -> Either TodoErr ()
check [] _ = return ()
check (x:xs) u = x u >> check xs u
я вот такое написал
в стд либ нету чегото похожего?
hoogle не помог

Evgenij
18.09.2016
16:23:33
А map итп?