Set: Difference between revisions

3,323 bytes added ,  3 years ago
Added Quackery.
(Added Delphi example)
(Added Quackery.)
Line 4,716:
{1, 2, 3, 4, 5, 6}
>>> </lang>
 
=={{header|Quackery}}==
 
Sets are not implemented in Quackery, so we start with an implementation of sets as sorted nests of strings without duplicates.
 
<lang Quackery> [ [] $ "" rot
sort$ witheach
[ tuck != if
[ dup dip
[ nested join ] ] ]
drop ] is -duplicates ( { --> { )
 
[ [] $ "" rot
sort$ witheach
[ tuck = if
[ nested join
$ "" ] ]
drop -duplicates ] is duplicates ( { --> { )
 
 
[ [] $ "" rot
sort$ witheach
[ tuck != iff
[ dup dip [ nested join ] ]
else
[ dip [ -1 pluck ]
over != if
[ nested join $ "" ] ] ]
drop ] is --duplicates ( { --> { )
 
[ [] swap
[ trim
dup $ "" = if
[ $ '"set{" without "}set"'
message put bail ]
nextword
dup $ "}set" != while
nested rot join swap
again ]
drop swap
-duplicates
' [ ' ] swap nested join
swap dip [ nested join ] ] builds set{ ( [ $ --> [ $ )
 
[ -duplicates
say "{ "
witheach [ echo$ sp ]
say "}" ] is echoset ( { --> { )
 
[ join duplicates ] is intersection ( { { --> { )
 
[ join -duplicates ] is union ( { { --> { )
 
[ join --duplicates ] is symmdiff ( { { --> { )
 
[ tuck intersection symmdiff ] is difference ( { { --> { )
 
[ over intersection = ] is subset ( { { --> b )
 
[ dip nested subset ] is element ( $ { --> b )
 
[ 2dup = iff
[ 2drop false ]
else subset ] is propersubset ( { { --> b )
 
 
set{ red orange green blue
purple apricot peach }set is colours ( --> { )
 
set{ apple peach pear melon
apricot banana orange }set is fruits ( --> { )
 
colours dup echoset say " are colours" cr
 
fruits dup echoset say " are fruits" cr
 
2dup intersection echoset say " are both fruits and colours" cr
 
2dup union echoset say " are fruits or colours" cr
 
2dup symmdiff echoset say " are fruits or colours but not both" cr
 
difference echoset say " are fruits that are not colours" cr
 
set{ red green blue }set dup echoset say " are"
colours subset not if [ say " not" ] say " all colours" cr
 
say "fruits and colours are" fruits colours = not if [ say " not" ]
say " exactly the same" cr
 
$ "orange" dup echo$ say " is"
fruits element not if [ say " not" ] say " a fruit" cr
 
set{ orange }set dup echoset say " is"
fruits propersubset dup if [ say " not" ] say " the only fruit"
not if [ say " or not a fruit" ] cr</lang>
 
{{out}}
 
<pre>{ apricot blue green orange peach purple red } are colours
{ apple apricot banana melon orange peach pear } are fruits
{ apricot orange peach } are both fruits and colours
{ apple apricot banana blue green melon orange peach pear purple red } are fruits or colours
{ apple banana blue green melon pear purple red } are fruits or colours but not both
{ apple banana melon pear } are fruits that are not colours
{ blue green red } are all colours
fruits and colours are not exactly the same
orange is a fruit
{ orange } is not the only fruit</pre>
 
=={{header|Racket}}==
1,465

edits