Bookstore

 Computer Math and Games in Pascal (preview) Lazarus Handbook

Author Topic: Operator outta  (Read 751 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

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!?
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: 12287
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: 80
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!