CVS difference for ai12s/ai12-0201-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0201-1.txt

--- ai12s/ai12-0201-1.txt	2016/08/19 04:23:58	1.1
+++ ai12s/ai12-0201-1.txt	2016/10/07 01:20:17	1.2
@@ -151,3 +151,97 @@
 
 ****************************************************************
 
+From: Randy Brukardt
+Sent: Thursday, August 18, 2016  11:25 PM
+
+> Now that we have static membership tests for strings (e.g. S in "abc" 
+> -- RM 4.9(11/4)) it seems odd to not permit static equality tests for 
+> strings (e.g. S = "abc").
+
+Attached is the AI I wrote for this thread [this is version /01 of the AI -
+Editor]; I'm posting it just in case Tucker gets ambitious -- I'd hate for
+him to repeat my work.
+
+****************************************************************
+
+From: Jeff Cousins
+Sent: Tuesday, August 23, 2016  9:30 AM
+
+Looks an ok write-up to me, thanks Randy,
+
+****************************************************************
+
+From: Jeff Cousins
+Sent: Monday, September 5, 2016  8:15 AM
+
+I'm probably going to regret asking this, but...
+
+Whilst we're on the subject of static-ness, what was the background behind
+only scalars and strings being static, and no other composites?
+
+It has long confused users that code such as:
+
+package Pure_Test1 is
+
+   pragma Pure;
+
+   type Node_Array_Type is array (0..63) of Boolean;
+
+   type Node_Array_Record_Type is record
+      Node_Array : Node_Array_Type;
+   end record;
+
+   Null_Node_Array_Record : constant Node_Array_Record_Type := (Node_Array => (others => False));
+
+end Pure_Test1;
+
+is valid, but not:
+
+package Pure_Test2 is
+
+   pragma Pure;
+
+   type Node_Array_Type is array (0..63) of Boolean;
+
+   Null_Node_Array : constant Node_Array_Type := (others => False);
+
+   type Node_Array_Record_Type is record
+      Node_Array : Node_Array_Type;
+   end record;
+
+   Null_Node_Array_Record : constant Node_Array_Record_Type := (Node_Array => Null_Node_Array);
+
+end Pure_Test2;
+
+even though it is generally preferred to use named objects and types rather
+than anonymous ones.
+
+****************************************************************
+
+From: Bob Duff
+Sent: Monday, September 5, 2016  10:42 AM
+
+> Whilst we're on the subject of static-ness, what was the background 
+> behind only scalars and strings being static, and no other composites?
+
+Ada 83 was scalars only.  We added static strings in Ada 95 to support pragmas
+that need them (link names and so forth).
+
+And there's a 200 character limit, so it's not a fully general feature.
+
+I think concerns were ease of implementation, and ease of efficient
+implementation (particular memory use at compile time).
+
+In your example, I'd probably give up on pragma Pure, rather than give up on
+the named constant.  I agree it's a bit annoying to have to give up one or the
+other.
+
+****************************************************************
+
+From: Jeff Cousins
+Sent: Monday, September 5, 2016  10:54 AM
+
+Thanks Bob.
+
+****************************************************************
+

Questions? Ask the ACAA Technical Agent