It looks to me that ps adds an extra level of boxing.  Check the result of
   ps set ;:'a b'
to see if I'm wrong.


The verbs need to have appropriate ranks. I am not sure what they should be but I will make my guesses:

sf"0 0"_ 0

sn"0 1 0

eo"_ 0 but this shows up a need for an eo that takes a boxed list of elements and checks them all

un"0

sd"0
nt"0
so"0
cp"0
ps"0

dv =: ,.&.>   but rank 0 in any case


Henry Rich


On 11/17/2013 9:19 PM, km wrote:
Will you try to "break" the following proposal before I post it on the J Wike?

Thanks,

-- Kip Murray


NB. J SETS PROPOSAL

NB. This ia a script you can copy and save, then load or loadd.


NB. INTRODUCTION

NB. Part of each set is its enclosing box.  Like a Venn diagram set.

NB. A set is a box enclosing a sorted list of boxes.
NB. An element is the contents of a box in the sorted list.

NB. A -: B tests whether set A is set B.


NB. DEFINITIONS

set =: [: < [: /:~ ~.  NB. create set from a box or list of boxes

NB. A set is a: or (scalar and its open is vector, boxed, without duplicates, 
and sorted).

isset =: (a: -: ]) +. [: *./ (0 = #@$) , [: ( (1 = #@$),(0 < L.),(-: ~.),(-: /:~) 
) >


NB. ILLUSTRATIONS

set 'a';i.2 2  NB. elements are 'a' and i. 2 2

set <'a'  NB. sole element is 'a'

]Empty =: set ''  NB. the empty set, same as Ace a:

isset Empty


NB. DEFINITIONS

sf =: [: > ({ >)  NB. From { for sets: retrieve xth element of y, a set

sn =: ([: # >) : ([: < (# >))  NB. Number # for sets

eo =: <@[ e. >@]  NB. test whether x is an element of y

un =: [: set ,&>  NB. union

mn =: -.&.> NB. "minus" -- create set with the elements of x that are not in y

sd =: mn un mn~  NB. symmetric difference

nt =: un mn sd  NB. intersection

so =: un -: ]  NB. test whether x is a subset of y

cp =: [: set [: , ({@(,&<))&>  NB. Cartesian product, adapted from CP in "Catalog 
{"

ps =: [: set [: <"0 ([: #: [: i. 2 ^ #@>) <@#"1 >  NB. ps y is the power set of 
y

NB. ps y is the set whose elements are all the subsets of y .  There are 2^#>y 
of them.

dv =: [: < [: ,. >  NB. dv y displays the set y vertically, useful for power 
sets!


NB. EXAMPLES

(set 1;2;3;3) -: set 3;1;2  NB. On each side the elements are 1 and 2 and 3 .

]A =: set 2;'b';1;'a'

]B =: set 'b';'a';4;3;'a'

A un B

A sd B

A nt B

(set 1;2) cp set 'a';'b';'c'

ps set 0;1;2


Sent from my iPad
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to