169 похожих чатов

Делал задачу вот такую https://stepik.org/lesson/4985/step/9?unit=1083 получилось такое https://play.haskell.org/saved/ipKrepqe оно работает,

тестов много не писал, но работает....

Я там вижу патерн, в функциях bsub и bsum повторяющийся, по идее его можно вынести в отдельную функцию, с передачей ей (subBi и sbi - приведя их у одному типу, что не сложно), вопрос, стоит ли таким заморачиваться?

И что еще там надо скомпоновать, для красивого кода?

Мне пока не понятен баланс читаемости и красивости (вот например в функции comp пару строк можно сократить, но как мне кажеться ухудшиться читаемость...

PS по поводу subBi написана как таблица истинности, можно переписать в стиле парной (sbi) , но тоже не понимаю, на сколько оно лучше в смысле понятность - красота...

PPS - В общем хотелось критики, рекомендаций.... В том числе по оформлению сообщения в чат, если опять написал непонятно.

22 ответов

109 просмотров

putStr a; putStrLn "" === putStrLn a

(ssb, lst) = foldl' (\(m, l) (a, b) -> f m l a b) (Zero, []) zl f m l a b = (sb, mb : l) === (ssb, lst) = foldl' f (Zero, []) zl f (m, l) (a, b) = (sb, mb : l)

(a, b) : _ -> if a == One then GT else LT === (One, _) : _ -> GT _ -> LT

чем comp отличается от compare?

Fedor- Автор вопроса
Cheese Syrowiecki
чем comp отличается от compare?

Ничем просто чтоб не пересечься по имени с библиотекой

comp2 :: [Bit] -> [Bit] -> Ordering comp2 aBl bBl = compare (p aBl) (p bBl) where p = reverse . prep (max (length aBl) (length bBl))

subBi что символизирует?

Fedor- Автор вопроса
Cheese Syrowiecki
subBi что символизирует?

Вычитание битов с заемом разряда

Fedor
Вычитание битов с заемом разряда

я бы как-то так написал subBi2 a b c = ifB a (b `eq` c, b `andB` c) (b `andB` notB c, b `orB` c)

Fedor- Автор вопроса
Cheese Syrowiecki
я бы как-то так написал subBi2 a b c = ifB a (b...

если система примет, попробуй type Bit = Bool subBi3 a b c = if a then (b == c, b && c) else (b && not c, b || c)

map (\b -> if b == Zero then replicate (length l) Zero else l) === map \case Zero -> Zero <$ l One -> l

Fedor- Автор вопроса
Cheese Syrowiecki
если система примет, попробуй type Bit = Bool su...

Bit определен как тип, могу наследовать что то... но не переопределить

(mapr, lr) = if cmp == GT then (mapal al, bl) else (mapal bl, al) lSum = mapr lr === lSum = if cmp == GT then mapal al bl else mapal bl al === lSum = case cmp of GT -> mapal al bl _ -> mapal bl al

Fedor- Автор вопроса
Cheese Syrowiecki
map (\b -> if b == Zero then replicate (length l) ...

Тут для <$ Control.Monad нужен, его стоит привыкать использовать ?

Fedor
Тут для <$ Control.Monad нужен, его стоит привыкат...

(<$) ограничен Functor и доступен из Prelude

Fedor- Автор вопроса
Cheese Syrowiecki
не нужен

Да разобрался, в общем к такой реализации стоит привыкать спасибо

Fedor- Автор вопроса
Cheese Syrowiecki
map (\b -> if b == Zero then replicate (length l) ...

вот такое выдает, куда копать не понимаю Main.hs:42:16: error: Unexpected \case expression in function application: \case Zero -> Zero <$ l One -> l Suggested fixes: • Use parentheses. • Perhaps you intended to use BlockArguments | 42 | mapal l = map \case как записать лямбду с кейсом понимаю, а вот так нет

Fedor
вот такое выдает, куда копать не понимаю Main.hs:4...

компилятор сам рассказывает, что добавить

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта