Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #29547
| Path | csiph.com!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
| Newsgroups | comp.lang.javascript |
| Subject | Re: passing a set of numbers to a function |
| Date | Fri, 05 Feb 2016 17:15:28 +0000 |
| Organization | A noiseless patient Spider |
| Lines | 86 |
| Message-ID | <87bn7vkrin.fsf@bsb.me.uk> (permalink) |
| References | <19679ed0-c594-4f7e-817c-a72bd5c10411@googlegroups.com> <sets-20160202102610@ram.dialup.fu-berlin.de> <22041181.SJtjrm8m6U@PointedEars.de> <dna6bbll0vvjn3gvovc9t822fduak5inlu@4ax.com> <87r3gso59h.fsf@bsb.me.uk> <1603158.xI32ru06Pi@PointedEars.de> <58b65993-5943-4f8e-a4e2-9e97bb1feea3@googlegroups.com> <n926p5$rqt$1@news.albasani.net> <87zivfkzyi.fsf@bsb.me.uk> |
| Mime-Version | 1.0 |
| Content-Type | text/plain |
| Injection-Info | mx02.eternal-september.org; posting-host="017616aa25f81ec581c44d76d61ba2f3"; logging-data="25327"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19ThkCDuDHpOdZtsY6BRgd3MmmYUb25fLk=" |
| Cancel-Lock | sha1:uyKDnCcAkGlTyeL/o8p9C/0Le98= sha1:LT4sFUdlhr0Ao9SiGkmFNknFhOI= |
| X-BSB-Auth | 1.8427eece018cfdb62a78.20160205171528GMT.87bn7vkrin.fsf@bsb.me.uk |
| Xref | csiph.com comp.lang.javascript:29547 |
Show key headers only | View raw
Ben Bacarisse <ben.usenet@bsb.me.uk> writes:
> Stefan Weiss <krewecherl@gmail.com> writes:
>
>> On 02/05/2016 01:19, Scott Sauyet wrote:
>>> There is a simple way to implement mathematical sets, finite or
>>> infinite using predicate functions. [...]
>>>
>>> But for those interested in sets which have the normal set operations
>>> of `contains`, `union`, `intersection`, and `complement`, the
>>> following looks to be quite simple:
>>>
>>> const set = pred => ({
>>> contains: pred,
>>> union: set2 => set(val => pred(val) || set2.contains(val)),
>>> intersection: set2 => set(val => pred(val) && set2.contains(val)),
>>> complement: () => set(val => !pred(val))
>>> });
>>>
>>> One could use this to create sets such as these:
>>>
>>> const fizz = set(n => n % 3 == 0);
>>> const buzz = set(n => n % 5 == 0);
>>> const fizzBuzz = fizz.intersection(buzz);
>>> const fizzOrBuzz = fizz.union(buzz);
>>> const notBuzz = buzz.complement();
>>
>> A very nice example.
>>
>> [snip tests]
>>
>>> But, for one trying to use a set as a Collection, these are missing
>>> several important features. Obviously there is no way to add or
>>> remove members. There is also no generic way to iterate, although
>>> obviously one could create iterators to match specific Sets. So,
>>> while this is reasonably close to mathematical sets, they are not
>>> really close to what are usually considered sets in software.
>>>
>>> We should also note that this misses at least one important notion
>>> from mathematics as well. I'm fairly certain that there is no way to
>>> write a `subset` function.
>>
>> Why? Wouldn't "subset" just be one more predicate to be combined with
>> the set's predicate?
>
> If S1 \subset S2 and S2 \subset S1 then S1 = S2. Hence a correct subset
> predicate could determines if two functions compute the same value in
> all cases.
>
> Similarly, you can't implement an isEmpty predicate either and, as Scott
> suggested, I think some version of Rice's theorem will come into play so
> that no "interesting" property of sets of sets will be decidable.
>
> (I'm not knocking the method. This is what I had in mind when I talked
> about implementing infinite sets because membership was, at that point,
> the only operation that was wanted.)
>
>> "intersection" already does that. The same would go
>> for adding or removing individual members or (sub)sets, using "union"
>> and "intersection", respectively.
>>
>> As for iterators, sets don't have an inherent order, so any kind of
>> ordered iteration would be an extension to the concept. The ability to
>> produce members, in any order, is also not a required property of a
>> set.
>
> That's a hot topic! See the well-ordering theorem of ZFC. Mind you,
> this is obviously not ZFC since it can express Russell's paradox:
>
> function russell(m, s) { return s.contains(m); }
That's a terrible name! It has very little to do with end result and
it's just as artefact left over from some editing. If it's named at all
it should be
function russell(s) { return !s.contains(s); }
(and R is then just set(russell)) but it's probably simpler just to
write
const R = set(x => ! x.contains(x));
R.contains(R);
<snip>
--
Ben.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
passing a set of numbers to a function Matheus Suffi <matheus.suffi40@gmail.com> - 2016-01-25 04:45 -0800
Re: passing a set of numbers to a function Aleksandro <aleksandro@gmx.com> - 2016-01-25 10:51 -0300
Re: passing a set of numbers to a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-01-29 03:57 +0100
Re: passing a set of numbers to a function Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2016-01-28 23:19 -0800
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-01-29 10:09 +0000
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-01-29 10:20 +0000
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-01-29 12:23 +0000
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-01-29 14:50 +0000
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-01-29 16:11 +0000
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-01-30 10:10 +0000
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-01-29 08:35 -0800
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-01-30 10:34 +0000
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-01-30 18:53 -0800
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-01-31 14:50 +0000
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-01-31 09:56 -0800
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-02-01 11:02 +0000
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-02-01 18:10 -0800
Re: passing a set of numbers to a function Gene Wirchenko <genew@telus.net> - 2016-01-29 09:38 -0800
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-01-29 20:17 +0000
Re: passing a set of numbers to a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-01-29 20:08 +0100
Re: passing a set of numbers to a function Aleksandro <aleksandro@gmx.com> - 2016-01-29 10:32 -0300
Re: passing a set of numbers to a function "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-01-29 14:53 +0100
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-01-29 06:26 -0800
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-01-29 14:19 +0000
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-01-29 08:38 -0800
Re: passing a set of numbers to a function Aleksandro <aleksandro@gmx.com> - 2016-01-29 13:54 -0300
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-01-29 10:11 -0800
Re: passing a set of numbers to a function Aleksandro <aleksandro@gmx.com> - 2016-01-29 15:38 -0300
Re: passing a set of numbers to a function Anders Wegge Keller <wegge@geostat.dk> - 2016-01-29 20:13 +0100
Re: passing a set of numbers to a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-01-29 20:46 +0100
Re: passing a set of numbers to a function Aleksandro <aleksandro@gmx.com> - 2016-01-29 16:59 -0300
Re: passing a set of numbers to a function Erwin Moller <erwinmollerusenet@xs4all.nl> - 2016-02-12 12:03 +0100
Re: passing a set of numbers to a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-02-02 11:18 +0100
Re: passing a set of numbers to a function Aleksandro <aleksandro@gmx.com> - 2016-02-02 12:31 -0300
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-02-04 10:42 +0000
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-02-04 15:38 +0000
Re: passing a set of numbers to a function Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-02-04 17:33 +0100
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-02-04 16:19 -0800
Re: passing a set of numbers to a function Stefan Weiss <krewecherl@gmail.com> - 2016-02-05 14:06 +0100
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-02-05 05:45 -0800
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-02-05 14:34 +0000
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-02-05 15:42 +0000
Re: passing a set of numbers to a function Stefan Weiss <krewecherl@gmail.com> - 2016-02-05 16:04 +0100
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-02-05 10:48 -0800
Re: passing a set of numbers to a function Stefan Weiss <krewecherl@gmail.com> - 2016-02-06 04:50 +0100
Re: passing a set of numbers to a function "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2016-02-06 10:05 -0800
Re: passing a set of numbers to a function Stefan Weiss <krewecherl@gmail.com> - 2016-02-06 23:30 +0100
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-02-06 17:32 -0800
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-02-05 14:13 +0000
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-02-05 17:15 +0000
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-02-05 05:19 -0800
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-02-05 13:43 +0000
Re: passing a set of numbers to a function Scott Sauyet <scott.sauyet@gmail.com> - 2016-02-05 06:08 -0800
Re: passing a set of numbers to a function Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-02-04 20:25 +0000
Re: passing a set of numbers to a function John Harris <niam@jghnorth.org.uk.invalid> - 2016-02-05 10:51 +0000
csiph-web