|
@@ -0,0 +1,36 @@
|
|
|
+{$mode objfpc}{$H+}
|
|
|
+
|
|
|
+type
|
|
|
+ PPosList = ^TPosList;
|
|
|
+ TPosList = record
|
|
|
+ elem : Double;
|
|
|
+ tail : ^TPosList;
|
|
|
+ end;
|
|
|
+
|
|
|
+ operator >< (e : single; list : PPosList) : PPosList;
|
|
|
+ begin
|
|
|
+ new (result);
|
|
|
+ result^.elem := e;
|
|
|
+ result^.tail := list;
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ list : PPosList;
|
|
|
+begin
|
|
|
+// This makes Fatal: Internal error 2008022101
|
|
|
+// list := 1.0 >< 3.0 >< 5.0 >< 7.0 >< 9.0 >< nil;
|
|
|
+// This says Error: Operation "><" not supported for types "ShortInt" and "Pointer"
|
|
|
+ list := 1.0 >< (3.0 >< (5.0 >< (7.0 >< (9.0 >< nil))));
|
|
|
+ if list^.elem<>1.0 then
|
|
|
+ halt(1);
|
|
|
+ if list^.tail^.elem<>3.0 then
|
|
|
+ halt(2);
|
|
|
+ if list^.tail^.tail^.elem<>5.0 then
|
|
|
+ halt(3);
|
|
|
+ if list^.tail^.tail^.tail^.elem<>7.0 then
|
|
|
+ halt(4);
|
|
|
+ if list^.tail^.tail^.tail^.tail^.elem<>9.0 then
|
|
|
+ halt(5);
|
|
|
+ if list^.tail^.tail^.tail^.tail^.tail<>nil then
|
|
|
+ halt(6);
|
|
|
+end.
|