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

Import qualified Data.Set as Set difference' :: Ord a

=> Set.Set a -> Set.Set a -> Set.Set a
difference' a Set.null = a
difference' Set.null b = Set.null
difference' (x:xs) ys
| Set.member x ys = difference' xs ys
| otherwise = x : difference' xs ys

какого фига компилятор ругается на Set.null?

19 ответов

21 просмотр

а как именно ругается?

Потому что Set.null - это предикат. Чтобы матчить сет, тебе нужен доступ к его конструкторам, а у тебя его нет (они не экспортируются)

TOV_MULTIMASSO
Потому что Set.null - это предикат. Чтобы матчить ...

нейминг конечно не лучший, соглашусь, новичкам хаскель без хлса лучше не трогать

Эту задачу проще решить через Set.foldr и Set.delete

difference' (x:xs) ys | Set.member x ys = difference' xs ys | otherwise = x : difference' xs ys Вот это не прокатит, потому что оператор : - это конструктор списка, а не сета

Space-Dev Автор вопроса
Space Dev
бля, и че дделать?

не слушать мультимассо

Nutritional Rabbit
ок

Хорошие у тебя советы - Internal модули импортировать

Space Dev
бля, и че дделать?

Или смотреть на foldr/delete для сета У тебя ж вычитание множеств?

Nutritional Rabbit
Почему нет?

Потому что используя Internal ты можешь себе радостно сделать разбалансированное дерево

Space Dev
бля, и че дделать?

difference a b = Set.foldr Set.delete a b

TOV_MULTIMASSO
difference a b = Set.foldr Set.delete a b

у тебя тут не будет слияния различных частей

TOV_MULTIMASSO
difference a b = Set.foldr Set.delete a b

а не вернет ли это лишь половину диффа?

adam Белоочий
а не вернет ли это лишь половину диффа?

А у него, судя по начатому решению, это именно несимметричная разница

TOV_MULTIMASSO
difference a b = Set.foldr Set.delete a b

у foldr Set. указывать не надо

Nutritional Rabbit
у foldr Set. указывать не надо

Это да, но только потому что обобщённая Data.Foldable.foldr реализована для Data.Set через Data.Set.foldr

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта