Recent

Author Topic: Operator outta  (Read 752 times)

domasz

  • Hero Member
  • *****
  • Posts: 526
Operator outta
« on: August 01, 2024, 09:33:37 am »
So we have operator in. We can use it like:

Code: Pascal  [Select][+][-]
  1. if 5 in [1,3,5]

Then we should have outta, like:

Code: Pascal  [Select][+][-]
  1. if 5 outta [1,3,4]

Much cleaner than

Code: Pascal  [Select][+][-]
  1. if not (5 in [1,3,4])

440bx

  • Hero Member
  • *****
  • Posts: 4478
Re: Operator outta
« Reply #1 on: August 01, 2024, 10:05:39 am »
if something like that were to be considered, I'd much prefer something along the lines of:
Code: Pascal  [Select][+][-]
  1. if 5 notin [1, 3, 4] then { whatever } ;
  2.  
(FPC v3.0.4 and Lazarus 1.8.2) or (FPC v3.2.2 and Lazarus v3.2) on Windows 7 SP1 64bit.

domasz

  • Hero Member
  • *****
  • Posts: 526
Re: Operator outta
« Reply #2 on: August 01, 2024, 10:17:24 am »
That's even better. We need this feature now! It's impossible to write any program in FP without this feature!!11 :D

BildatBoffin

  • New Member
  • *
  • Posts: 26
Re: Operator outta
« Reply #3 on: August 01, 2024, 11:39:05 am »
Why not just the not-in combo

Code: Pascal  [Select][+][-]
  1. if 5 not in [1,3,4]


Kays

  • Hero Member
  • *****
  • Posts: 600
  • Whasup!?
    • KaiBurghardt.de
Re: Operator outta
« Reply #4 on: August 01, 2024, 11:46:40 am »
If
Code: Pascal  [Select][+][-]
  1. if not
bothers you, you may want to program in Ruby or other languages that have the keyword
Code: Ruby  [Select][+][-]
  1. unless
There is of course the option to rephrase an expression:
Code: Pascal  [Select][+][-]
  1. if [5] * [1, 2, 3] = [] then
Yours Sincerely
Kai Burghardt

domasz

  • Hero Member
  • *****
  • Posts: 526
Re: Operator outta
« Reply #5 on: August 01, 2024, 12:02:45 pm »
"not in" might be harder to introduce than "notin" since "not" already is used for something else.
For me "unless" is kinda weird.

Code: Pascal  [Select][+][-]
  1. if [5] * [1, 2, 3] = [] then
That's too mathy :)

wp

  • Hero Member
  • *****
  • Posts: 12288
Re: Operator outta
« Reply #6 on: August 01, 2024, 01:11:09 pm »
What's wrong with
Code: Pascal  [Select][+][-]
  1.  if not (5 in [1, 2, 3])
? Having to type two backets? Come on...

domasz

  • Hero Member
  • *****
  • Posts: 526
Re: Operator outta
« Reply #7 on: August 01, 2024, 01:19:11 pm »
Brackets make things harder to read. In this example it's easy:
Code: Pascal  [Select][+][-]
  1. if not (5 in [1, 2, 3])
but it can be more complicated:
Code: Pascal  [Select][+][-]
  1. if ((not (5 in [1,2,3]) or (6 > 5) or (7 = fun(8))) and (1 = 2)
With operator "notin" and a few others we could simplify a lot or expressions.

Khrys

  • Jr. Member
  • **
  • Posts: 81
Re: Operator outta
« Reply #8 on: August 01, 2024, 01:23:08 pm »
If you really, really want to do this...

Code: Pascal  [Select][+][-]
  1. {$macro on}
  2. {$define outta := xor}
  3.  
  4. type
  5.   TByteSet = set of Byte;
  6.  
  7. operator xor(A: Integer; B: TByteSet): Boolean; inline;
  8. begin
  9.   Result := not (A in B);
  10. end;
  11.  
  12. function Test(): Boolean;
  13. begin
  14.   Result := 5 outta [1, 3, 4];
  15. end;

domasz

  • Hero Member
  • *****
  • Posts: 526
Re: Operator outta
« Reply #9 on: August 01, 2024, 10:38:17 pm »
Thanks, Khrys. That's very nice!

 

TinyPortal © 2005-2018