Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #39729

Re: input/output parameters

From Anton Shepelev <anton.txt@gmail.com>
Newsgroups comp.lang.javascript
Subject Re: input/output parameters
Date 2021-03-21 15:16 +0300
Organization A noiseless patient Spider
Message-ID <20210321151659.57d54d5ac979fca6d77b0ba7@gmail.com> (permalink)
References <20210313153232.40fa0c8b0adf07d7e807084d@gmail.com> <20210315002732.dbb3221feb6d3a0c065292cf@gmail.com> <slrns4t8bk.4fd.jon+usenet@raven.unequivocal.eu> <20210320145630.62e1c4dde277c68dcd052e3e@gmail.com> <slrns5c3vp.4lq.jon+usenet@raven.unequivocal.eu>

Show all headers | View raw


Jon Ribbens to Anton Shepelev:

> > Thank you for this valuable comment. What is the scope
> > of this negative effect of eval() -- current block,
> > current function, or the entire program?
>
> I'm not sure I'm afraid -- and it's possible of course
> that it varies from one implementation to another and from
> one version to another.

Since JavaScript is advertised as a functional language, it
would behove its compilers and interpreters to be aware of
pure fuctions. Observer that my `makeref' defined above as

   // Returns JavaScript for the defintion of a "pointer" to a variable named `v':
   // The identifier of the pointer is that of the variable prepended by a $.
   function makeref(v)
   {   return `var $${v} = {set _(val){${v}=val;},get _() {return ${v};}}`;  }

and applied exclusively to string literals:

   var /* number */ root  ; eval( makeref( "root" ) );

is pure in the sense that the compiler/interpreter need not
analyse it at every invocation, but can simply expand it
like a macro at a pre-processing stage, resulting in zero
`eval' overhead.

> You can use 'new Function()' however which avoids some of
> the problems
> const add = new Function('a', 'b', 'return a + b')

I don't understand how to implement my `makeref' function
via `new Function'.

> https://paiza.io/projects/jEjvMFPZyKTzNi6oBWKAOQ?language=javascript

It says that "However, unlike eval, the Function constructor
creates functions which execute in the global scope only,"
whereas in practice they seem to work in local scope as
well:

   const sum = new Function('a', 'b', 'return a + b');
   function test()
   {  console.log(sum(2,1));  }

   test();

In the example above, dynamiucally created function `sum' is
invoked in the local scope function `test()'. Aparently, I
misunderstand the remark...

> (bearing in mind I'm still strongly disrecommending your
> entire approach).

I do bear that in mind. Confining oneself to a subset of
language features is one thing, whereas struggling like
salmon against the langauge is another, and if I find myself
rushing upstream and exhausted, I will revise my strategy,
gradually bringing in more JS-specific features.

-- 
()  ascii ribbon campaign -- against html e-mail
/\  http://preview.tinyurl.com/qcy6mjc [archived]

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-13 15:32 +0300
  Re: input/output parameters Jon Ribbens <jon+usenet@unequivocal.eu> - 2021-03-13 15:16 +0000
    Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-14 18:51 +0300
      Re: input/output parameters Jon Ribbens <jon+usenet@unequivocal.eu> - 2021-03-14 16:15 +0000
        Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-14 18:31 +0000
          Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-14 22:27 +0300
            Re: input/output parameters Jon Ribbens <jon+usenet@unequivocal.eu> - 2021-03-14 23:44 +0000
            Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-15 06:41 -0700
        Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-14 22:17 +0300
          Re: input/output parameters Jon Ribbens <jon+usenet@unequivocal.eu> - 2021-03-14 23:28 +0000
          Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-15 06:39 -0700
      Re: input/output parameters Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-03-14 22:32 +0000
      Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-15 06:36 -0700
        Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-20 14:49 +0300
          Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-20 11:59 -0700
            Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-20 13:07 -0700
          Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-20 19:29 +0000
            Re: input/output parameters Jon Ribbens <jon+usenet@unequivocal.eu> - 2021-03-20 20:35 +0000
  Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-15 00:27 +0300
    Re: input/output parameters Jon Ribbens <jon+usenet@unequivocal.eu> - 2021-03-14 23:51 +0000
      Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-20 14:56 +0300
        Re: input/output parameters Jon Ribbens <jon+usenet@unequivocal.eu> - 2021-03-20 15:08 +0000
          Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-21 15:16 +0300
            Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-21 08:46 -0700
              Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-04-10 14:54 +0300
        Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-20 12:05 -0700
          Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-21 15:58 +0300
    Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-15 06:43 -0700
    Re: input/output parameters Silvio <silvio@internet.com> - 2021-03-15 18:01 +0100
      Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-16 18:06 +0000
        Re: input/output parameters Silvio <silvio@internet.com> - 2021-03-16 23:58 +0100
          Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-17 19:14 +0000
            Re: input/output parameters Silvio <silvio@internet.com> - 2021-03-17 23:46 +0100
              Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-18 18:04 +0000
                Re: input/output parameters Silvio <silvio@internet.com> - 2021-03-22 00:39 +0100
                Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-23 10:44 +0000
                Re: input/output parameters Silvio <silvio@internet.com> - 2021-03-30 00:33 +0200
                Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-31 19:53 +0100
                Re: input/output parameters Silvio <silvio@internet.com> - 2021-04-01 01:17 +0200
                Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-04-01 18:02 +0100
      Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-20 15:50 +0300
        Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-20 18:52 +0000
          Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-21 17:35 +0300
            Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-21 08:50 -0700
              Re: input/output parameters Anton Shepelev <anton.txt@gmail.com> - 2021-03-21 19:31 +0300
            Re: input/output parameters John G Harris <niam@jghnorth.org.uk.invalid> - 2021-03-21 19:27 +0000
        Re: input/output parameters "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-03-20 13:02 -0700
  Re: input/output parameters Postiljon Petskin <yyyyyyyyyyyywwwww@zohomail.eu> - 2023-04-22 08:47 -0700

csiph-web