Size: a a a

2019 December 17

AB

Alexey Bolshakov in pro.elixir
как же я обожаю голанх и голашников
источник

AB

Alexey Bolshakov in pro.elixir
но дискуссия была очень интересная. я даже полезное для себя нашел.
источник

AB

Alexey Bolshakov in pro.elixir
Логичный Лесник
Вытесняющая многозадочность в Go происходит в 5-случаях:
1. Система сама расставляет точки останова
2. Когда ты вызываешь GoShed
3. При локах
4. Net/IO
5. Системный вызов
вот это, например
источник

AB

Alexey Bolshakov in pro.elixir
я знал только провызов чего-либо стороннего (4, 5) и руками (похоже 2)
источник

ЛЛ

Логичный Лесник in pro.elixir
Alexey Bolshakov
как же я обожаю голанх и голашников
Смысл не в том, чтобы возвысить Go, а в том чтобы ответить на вопрос Зачем?. К примеру, возьмём haskell. Казалось бы, бесполезный по сути язык, но он приучает тебя к написанию тестируемого кода. Чистые функции и правда легко тестировать. Пожалуй это одно из главных его преимуществ. Пример:
createNewUser :: RequestBody -> IO (Either Error User)
createNewUser body =
 case bodyToUser body of
   Left err -> pure . Left $ err
   Right (user, pass) -> do
     -- Connect to DB:
     db <- connectToDb
     let
       insertSql =
         "INSERT INTO table (user_name, password) VALUES (?, ?) returning id"

     -- Persist using insert statement:
     userId <- query db insertSql (user, pass)

     -- Create a response
     pure . Right $ User { userName = user, userId = userId }

Функция не идеальна, можно было бы её разить на части, но подход приколный. Такой код легко протестировать.
источник

ЛЛ

Логичный Лесник in pro.elixir
Я не спец в хаскеле, но некоторые идеи мне нравятся. К тому же они понятны.
источник

AB

Alexey Bolshakov in pro.elixir
видео выше - тоже отличное. посмотрел с удовольствием. спасибо
источник

PG

Pïg Grëënëst in pro.elixir
А зачем целый Either в IO пихать?
источник

ЛЛ

Логичный Лесник in pro.elixir
Pïg Grëënëst
А зачем целый Either в IO пихать?
Это просто пример, который легко прочитать.
источник

PG

Pïg Grëënëst in pro.elixir
Плохой пример, кровушка из глаз брызгает
источник

PG

Pïg Grëënëst in pro.elixir
А люди без знания хаскеля даже этого не поймут
источник

AB

Alexey Bolshakov in pro.elixir
я вообще не понимаю, чего тут написано
источник

ЛЛ

Логичный Лесник in pro.elixir
Pïg Grëënëst
Плохой пример, кровушка из глаз брызгает
Говорю же, я не спец в хаскеле - идея была показать простой пример.
источник

AB

Alexey Bolshakov in pro.elixir
давай, как в детском саду. поясни, что делает пример, pls
источник

PG

Pïg Grëënëst in pro.elixir
Лучше вдарить по больному и показать примеры с Maybe или Either
источник

ЛЛ

Логичный Лесник in pro.elixir
Alexey Bolshakov
давай, как в детском саду. поясни, что делает пример, pls
Просто пример REST API, который записывает в базу логин/пароль.
источник

AB

Alexey Bolshakov in pro.elixir
1) «Казалось бы, бесполезный по сути язык» - ну, вероятно. мне не зашел
2) но он приучает тебя к написанию тестируемого кода - я всегда пишу тесты. потому что мне лень руками в консоли проверять работу методов. я эту проверку пишу в виде тестов всегда. пока что никаких книг про тдд не читал. не хочешь писать тесты - ну не пиши
3) Чистые функции и правда легко тестировать. Пожалуй это одно из главных его преимуществ. - ну, пишешь в языке Х чистую функцию да и тестируешь.
источник

PG

Pïg Grëënëst in pro.elixir
Чсх, в примере функция максимально нечистая
источник

AB

Alexey Bolshakov in pro.elixir
Логичный Лесник
Смысл не в том, чтобы возвысить Go, а в том чтобы ответить на вопрос Зачем?. К примеру, возьмём haskell. Казалось бы, бесполезный по сути язык, но он приучает тебя к написанию тестируемого кода. Чистые функции и правда легко тестировать. Пожалуй это одно из главных его преимуществ. Пример:
createNewUser :: RequestBody -> IO (Either Error User)
createNewUser body =
 case bodyToUser body of
   Left err -> pure . Left $ err
   Right (user, pass) -> do
     -- Connect to DB:
     db <- connectToDb
     let
       insertSql =
         "INSERT INTO table (user_name, password) VALUES (?, ?) returning id"

     -- Persist using insert statement:
     userId <- query db insertSql (user, pass)

     -- Create a response
     pure . Right $ User { userName = user, userId = userId }

Функция не идеальна, можно было бы её разить на части, но подход приколный. Такой код легко протестировать.
это описание функции такое?
источник

AB

Alexey Bolshakov in pro.elixir
а где список параметров? я просто вообще вишу какую-то кашу из буков
источник