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 ответов

67 просмотров

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
Тут для <$ Control.Monad нужен, его стоит привыкат...

можно не заучивать, просто удобно

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...

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

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

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

Может кто встречал такое? Один набор данных, но в одном столбце кодировка нормальная, а в другом ироглифы. Как такое может быть?
Alexander
23
Всем привет. Подскажите, пожалуйста, почему не ищет русскую букву а? А английскую ищет. Полагаю что-то с кодировкой. Но как исправить это? procedure TfrmMain.btnOpenFileClic...
Евгений
7
И к какой архитектуре привязана Java?
Dmitry Olshansky
17
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Как это поможет если в архив положили папку?
Sasha Beep
8
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
Карта сайта