Использование ETS Select для формирования пересечения - PullRequest
1 голос
/ 28 апреля 2010

У меня есть следующая структура ETS:

SomeTable = ets:new(sometable, [bag]).
ets:insert(SomeTable, [
                        {set1,item1},
                        {set1,item2},
                        {set1,item3},
                        {set2,item1},
                        {set2,item2},
                        {set2,item4}]).

Я хочу получить пересечение set1 и set2, используя ets: select и fun2ms, результат будет [item1, item2].

Я часами пытался выполнить это с помощью ets: select и fun2ms безуспешно. Вы можете помочь мне с помощью ets: select и fun2ms?

спасибо за все ответы!

ps: я знаю о модуле множеств, но я должен использовать ets и эту точную структуру данных.

1 Ответ

0 голосов
/ 28 апреля 2010
qlc:e(qlc:q([ I || {set1, I} <- ets:table(sometable), ets:match_object(sometable, {set2, I}) =/= []])).
...