Neulich war mir in der Schule langweilig, da kritzelte ich auf meinen Block herum und irgendwann stellte ich mir die Aufgabe, die Signumfunktion in PB zu lösen

Code: Alles auswählen
Macro sgn(x)
(-(~~x<0)+(x>0))
EndMacro
Debug sgn(-5)
Debug sgn(0)
Debug sgn(7)
Die Procedure hätte den Vorteil, dass die äußeren Klammern wegfallen, denn die Muss ich beim Makro haben, damit es sicherer ist, wenn ich das makro in komplexere ausdrücke einbaue.
Hier meine erste Version, die ich dann Schrittweise zusammengeschrumpft habe:
Code: Alles auswählen
; Version 1:
-(x < 0 And 1)+(x > 0 And 1)
; Version 2:
(-(Not Not x < 0)+(Not Not x > 0))
Ach ja: Kann mir jemand ~ nochmal erklären? Ich kann mir nur an Karls Erklärung erinnern: "~ ist ein Not auf Bit-ebene"... Häää? Hier funktioniert es jedenfalls auch so...
