Size: a a a

Emacs — русскоговорящее сообщество

2020 May 16

A

Aragaer in Emacs — русскоговорящее сообщество
допустим я не умею в calloc и пытаюсь его реализовать сам
void *my_func(int size) {
  void *result = malloc(size);
  if (result == NULL)
   return NULL;
  bzero(result, size);
  return result;
}
источник

A

Artem in Emacs — русскоговорящее сообщество
хорошо
источник

A

Aragaer in Emacs — русскоговорящее сообщество
допустим теперь некоторый условный псевдокод - malloc возвращает MaybeAddr
источник

A

Aragaer in Emacs — русскоговорящее сообщество
MaybeAddr my_func(int size) {
   MaybeAddr result = malloc(size);
   if (result == Nothing)
       return result;
   bzero(GetAddrFromMaybe(result), size);
   return result;
}
источник

A

Aragaer in Emacs — русскоговорящее сообщество
ну тут правда накладывается, что bzero не возвращает результата, но не суть
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
вопрос то в чем?
источник

A

Aragaer in Emacs — русскоговорящее сообщество
вопрос "ну допустим Maybe это монада, но что мне это дает?"
источник

A

Aragaer in Emacs — русскоговорящее сообщество
или вообще - пусть некая хня это монада. Что мне это дает и как мне этим воспользоваться?
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
ну, например, есть некоторые стандартные функции, которые работают с монадами
источник

A

Artem in Emacs — русскоговорящее сообщество
д
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
источник

A

Aragaer in Emacs — русскоговорящее сообщество
ну когда я на них смотрю, у меня в голове мысль "и зачем, если можно то же самое без монад?"
источник

A

Artem in Emacs — русскоговорящее сообщество
Aragaer
ну когда я на них смотрю, у меня в голове мысль "и зачем, если можно то же самое без монад?"
Например, вызвал ты 1000 раз свой calloc, сделав лист указателей.

Вместо того, тчобы каждый результат проверять 1000 раз,

ты берешь короче

sequence([Just(4939439), Just(53488334),  Nothing, Just(58483843)])

и получаешь

Nothing

или берешь

sequence([Just(4939439), Just(53488334), Just(58483843)])

и получаешь

Just [J4939439, 53488334 58483843]
источник

A

Artem in Emacs — русскоговорящее сообщество
И есть много приколюх под разные юзкейсы
источник

A

Artem in Emacs — русскоговорящее сообщество
Все это компоузится ещё офигительно обычно
источник

A

Artem in Emacs — русскоговорящее сообщество
Короче, бросай сишечку
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
Aragaer
ну когда я на них смотрю, у меня в голове мысль "и зачем, если можно то же самое без монад?"
тогда у тебя своя функция для каждого типа будет
источник

A

Aragaer in Emacs — русскоговорящее сообщество
не. я к тому, что там вот mapM например, но есть же обычный map
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
они по разному будут работать
источник

PG

Pig Greenest in Emacs — русскоговорящее сообщество
map  :: Monad m => (a -> m b) -> [a] -> [m b]
mapM :: Monad m => (a -> m b) -> [a] -> m [b]

видишь разницу?
источник