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

20 просмотров

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

Потому что 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

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

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

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
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта