comp.lang.ada
 help / color / mirror / Atom feed
* "accessibility check failed" on Node
@ 2013-06-26 23:01 Thomas Schmidt
  2013-06-26 23:45 ` Shark8
                   ` (5 more replies)
  0 siblings, 6 replies; 19+ messages in thread
From: Thomas Schmidt @ 2013-06-26 23:01 UTC (permalink / raw)


Hi,

I'm new to Ada. I'm trying to write some kind of neural net software. 
Therefore I've written a small library to implement the neural graph. 
All nodes are collected in a Hashed_Set. Neurons are specialized Nodes 
of the graph. To lookup a given Neuron/Node I need the following 
subprogram "findNode".

Now what I don't understand: Why does "findNode1" work well while 
"findNode2" raises PROGRAM_ERROR at the line indicated below?


Given the following declarations:

   -- Node of a directed graph
   type Node is new NodeBase with private;	-- NodeBase is tagged.
   type Node_Class_Access is access all Node'Class;

and the DirectedGraph is a tagged record with one of its elements 
(named "nodes") being a NodeSet defined as a Set of my NodeSets package

  package NodeSets is new Ada.Containers.Hashed_Sets (
     Element_Type        => Node_Class_Access,
     Hash                => Nodes.hash,
     Equivalent_Elements => Nodes.equiv);

   --------------
   -- findNode1 --
   --------------

   function findNode1
     (graph : DirectedGraph;
      aNode : access Node'Class)
      return  Node_Class_Access is

      position : constant NodeSets.Cursor :=
        graph.nodes.Find (Node (aNode.all)'Access);	-- <<< Works well

   begin
      if position /= NodeSets.No_Element then
         return Element (position);
      else
         raise NoElement;
      end if;
   end findNode1;

   --------------
   -- findNode2 --
   --------------

   function findNode2
     (graph : DirectedGraph;
      aNode : access Node'Class)
      return  Node_Class_Access is

      position : constant NodeSets.Cursor :=
        graph.nodes.Find (aNode.all'Access);	-- <<< Raises 
PROGRAM_ERROR with "accessibility check failed"

   begin
      if position /= NodeSets.No_Element then
         return Element (position);
      else
         raise NoElement;
      end if;
   end findNode2;

"findNote" will be called with a Neuron as its second argument.


Many thanks for your explanations

Thomas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-26 23:01 "accessibility check failed" on Node Thomas Schmidt
@ 2013-06-26 23:45 ` Shark8
  2013-06-26 23:58 ` Jeffrey Carter
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 19+ messages in thread
From: Shark8 @ 2013-06-26 23:45 UTC (permalink / raw)


At first blush, it looks like aNode is Null.
(position : constant NodeSets.Cursor := graph.nodes.Find (aNode.all'Access);)

Try adding "not null" to the parameter... or you could restructure it a bit:
    function findNode2
      (graph : DirectedGraph;
       aNode : access Node'Class)
      return  Node_Class_Access is

    begin
	declare
	    position : constant NodeSets.Cursor :=
	      graph.nodes.Find (aNode.all'Access);
	begin
	    if position /= NodeSets.No_Element then
		return Element (position);
	    else
		raise NoElement;
	    end if;
	exception
	    When PROGRAM_ERROR => raise NoElement;
	end;
    end findNode2;


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-26 23:01 "accessibility check failed" on Node Thomas Schmidt
  2013-06-26 23:45 ` Shark8
@ 2013-06-26 23:58 ` Jeffrey Carter
  2013-06-27  7:36 ` Georg Bauhaus
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 19+ messages in thread
From: Jeffrey Carter @ 2013-06-26 23:58 UTC (permalink / raw)


On 06/26/2013 04:01 PM, Thomas Schmidt wrote:
>
> I'm new to Ada. I'm trying to write some kind of neural net software. Therefore
> I've written a small library to implement the neural graph. All nodes are
> collected in a Hashed_Set. Neurons are specialized Nodes of the graph. To lookup
> a given Neuron/Node I need the following subprogram "findNode".

You'll probably continue to have trouble with Ada as long as you continue to use 
anonymous types, unnecessary access types, and un-Ada-like names such as 
Findnode (rather than Find_Node).

You could also save yourself a lot of work by using the package 
PragmARC.REM_Neural_Network_Wrapper. The PragmAda Reusable Components are 
available from pragmada.x10hosting.com.

-- 
Jeff Carter
"Unix and C are the ultimate computer viruses."
Richard Gabriel
99

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-26 23:01 "accessibility check failed" on Node Thomas Schmidt
  2013-06-26 23:45 ` Shark8
  2013-06-26 23:58 ` Jeffrey Carter
@ 2013-06-27  7:36 ` Georg Bauhaus
  2013-06-27  7:49 ` Dmitry A. Kazakov
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 19+ messages in thread
From: Georg Bauhaus @ 2013-06-27  7:36 UTC (permalink / raw)


On 27.06.13 01:01, Thomas Schmidt wrote:
> Hi,
>
> I'm new to Ada. I'm trying to write some kind of neural net software. Therefore I've written a small library to implement the neural graph. All nodes are collected in a Hashed_Set. Neurons are specialized Nodes of the graph. To lookup a given Neuron/Node I need the following subprogram "findNode".
>
> Now what I don't understand: Why does "findNode1" work well while "findNode2" raises PROGRAM_ERROR at the line indicated below?

>       position : constant NodeSets.Cursor :=
>         graph.nodes.Find (Node (aNode.all)'Access);    -- <<< Works well

>       position : constant NodeSets.Cursor :=
>         graph.nodes.Find (aNode.all'Access);    -- <<< Raises PROGRAM_ERROR with "accessibility check failed"

The only written difference I see is that the type
of the object whose 'Access is taken in findNode1 is
Node, whereas the type of aNode.all in findNode2
is not necessarily Node. Node is the type used as target
type of what is in the container. If aNode is a pointer
to type that is not declared at the same level as type
Node, then this former type may no longer be
accessible. Therefore, anything specific to the type
is assumed to be gone, including any specific 'Address
operation.

(E.g., Node may be declared at library level, and
Some_Other_Node declared inside some procedure, or
in some generic instance not at library level.)

Some ways of identifying a node can be less troublesome
than using its address. Any identity less accidental
than addresses facilitates persistent identities.

Have you looked at the indefinite containers?


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-26 23:01 "accessibility check failed" on Node Thomas Schmidt
                   ` (2 preceding siblings ...)
  2013-06-27  7:36 ` Georg Bauhaus
@ 2013-06-27  7:49 ` Dmitry A. Kazakov
  2013-06-27  8:24 ` Simon Wright
  2013-06-27 10:46 ` Stephen Leake
  5 siblings, 0 replies; 19+ messages in thread
From: Dmitry A. Kazakov @ 2013-06-27  7:49 UTC (permalink / raw)


On Thu, 27 Jun 2013 01:01:19 +0200, Thomas Schmidt wrote:

> I'm new to Ada. I'm trying to write some kind of neural net software. 
> Therefore I've written a small library to implement the neural graph. 
> All nodes are collected in a Hashed_Set. Neurons are specialized Nodes 
> of the graph.

I don't think that is a good approach. I have a comparable project which
deployed fuzzy decision trees. DT's are not really trees but rather
directed graphs. The properties of such graphs are much alike to ones of
NN's. E.g. layers, waterfall navigation upon classification etc.

Building a hash function for nodes of such a graph is a problem. Especially
if you want to factor out repeating subgraphs, which I did because I had a
huge number of nodes. If the hash function takes into account the edges and
weights, and it should, any modification of the graph will kill it.

As others have pointed out, do not use anonymous access types.

On top of that. You should carefully design the strategy of memory
collection. It will have a great impact on how easy or difficult would be
to implement graph management operations, especially in a concurrent
environment when many tasks access the graph, e.g. one does training,
another pulls the MVC's model of the GUI, third does storing it into the
persistent storage.

For my project I used reference counting with weak and strong references
and cloning shared nodes upon update.

P.S. I am afraid one cannot do it in a simple way without much upfront
design, and then gradually evolve it to deal with complicated issues like
above.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-26 23:01 "accessibility check failed" on Node Thomas Schmidt
                   ` (3 preceding siblings ...)
  2013-06-27  7:49 ` Dmitry A. Kazakov
@ 2013-06-27  8:24 ` Simon Wright
  2013-06-27 11:19   ` Thomas Schmidt
  2013-06-27 10:46 ` Stephen Leake
  5 siblings, 1 reply; 19+ messages in thread
From: Simon Wright @ 2013-06-27  8:24 UTC (permalink / raw)


Thomas Schmidt <TC.Schmidt@gmx.net> writes:

>   function findNode2
>     (graph : DirectedGraph;
>      aNode : access Node'Class)
>      return  Node_Class_Access is

I spent quite some time making a compilable example. It would have been
kind of you to have done the same!

The call in

     position : constant NodeSets.Cursor :=
       graph.nodes.Find (aNode.all'Access);

seemed a bit magical (a respected colleague said that he found himself
using ".all.Access" as a band-aid for shutting up the compiler's
complaints about type mismatches without bothering to understand
them). So I tried

      N : constant Node_Class_Access := Node_Class_Access (aNode);
      position : constant NodeSets.Cursor := graph.nodes.Find (N);

which moved the "accessibility check failed" to the "N :=" line.

I made a findNode3 with the type of aNode changed to Node_Class_Access:

   function findNode3
     (graph : DirectedGraph;
      aNode : Node_Class_Access)
     return  Node_Class_Access is

      position : constant NodeSets.Cursor := graph.nodes.Find (aNode);

   begin
      if position /= NodeSets.No_Element then
         return Nodesets.Element (position);
      else
         raise No_Element with "failed in Findnode3";
      end if;
   end findNode3;

Calling findNode3 with an aliased local Neuron now requires me to use
'Unchecked_Access, or I get the compilation error "non-local pointer
cannot point to local object".

As to your original question, why "Node (aNode.all)'Access" should be OK
while "aNode.all'Access" isn't .. I expect the answer is something deep,
and I'd go along with Jeff Carter about avoiding the use of anonymous
access types.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-26 23:01 "accessibility check failed" on Node Thomas Schmidt
                   ` (4 preceding siblings ...)
  2013-06-27  8:24 ` Simon Wright
@ 2013-06-27 10:46 ` Stephen Leake
  5 siblings, 0 replies; 19+ messages in thread
From: Stephen Leake @ 2013-06-27 10:46 UTC (permalink / raw)


Thomas Schmidt <TC.Schmidt@gmx.net> writes:

> I'm new to Ada. 

Welcome!

> Now what I don't understand: Why does "findNode1" work well while
> "findNode2" raises PROGRAM_ERROR at the line indicated below?

Accessibility refers to where an object is declared, relative to where
its type is declared.

> Given the following declarations:

It's better if you post a complete compilable example, so we can compile
it, and maybe fix the bug.


>   function findNode2
>     (graph : DirectedGraph;
>      aNode : access Node'Class)
>      return  Node_Class_Access is
>
>      position : constant NodeSets.Cursor :=
>        graph.nodes.Find (aNode.all'Access);	-- <<< Raises
> PROGRAM_ERROR with "accessibility check failed"

First, a style note: since aNode is already an access, aNode.all'Access
is just aNode. Is there some reason you wrote it this way?

The accessiblity check applies to the object that aNode designates. If
the type Node is declared at library level, but the object is at some
lower level in a subprogram, then when that subprogram returns, the
object will disappear, and the access value will become invalid. Ada
forbids this. 

If you post a complete example, we can give more precise help.

-- 
-- Stephe


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27  8:24 ` Simon Wright
@ 2013-06-27 11:19   ` Thomas Schmidt
  2013-06-27 12:49     ` Frédéric Praca
                       ` (3 more replies)
  0 siblings, 4 replies; 19+ messages in thread
From: Thomas Schmidt @ 2013-06-27 11:19 UTC (permalink / raw)


Hi all,

thank you for your tips

On 2013-06-27 08:24:52 +0000, Simon Wright said:

>  spent quite some time making a compilable example. It would have been
> kind of you to have done the same!
Sorry, next time I'll offer a complete compilable example.

> The call in
> 
>      position : constant NodeSets.Cursor :=
>        graph.nodes.Find (aNode.all'Access);
> 
> seemed a bit magical (a respected colleague said that he found himself
> using ".all.Access" as a band-aid for shutting up the compiler's
> complaints about type mismatches without bothering to understand
> them).
Exactly my way: "without bothering to understand them". But it solved 
my problem.

But thank you to your hints. I'll try
- to avoid anonymous types,
- unnecessary access types,
- declare access parameters to exclude null (if usefull).
- (I'm not really a friend of those Ada naming conventions using 
undersore between name components).
- I'm looking for some tutorial describing the most important 
differences between C++ and Ada.


I like Ada being a really type safe and straight forward language 
offering a lot aspects (like the task concept, …) I'm missing in C/C++. 
But as coming from C/C++ its sometimes difficult to really understand 
Adas concepts. So I had to learn that Adas in-parameter mode doesn't 
match C++s call by value. That's one way to avoid access parameter, I 
think. I'm not really familiar with Adas accessibility levels. And last 
but not least I'm currently on the way to understand the differences 
between extensible tagged types and class-wide types.


Some of you mentioned that I could use some publically accesible 
libraries to build up my neural network. That's ok, I'm not really a 
friend of reinventing the wheel. But my goals are not only those neural 
networks but also the Ada language. Otherwise I would use C++ (which is 
really a mess but I'm familiar with it) or use some publically 
available NN simulators. I think the best way to learn is in using 
"real" jobs than examples simplifying the world. It would be a great 
deal to write my own neural net simulator in Ada!


Thanks
Thomas



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 11:19   ` Thomas Schmidt
@ 2013-06-27 12:49     ` Frédéric Praca
  2013-06-27 14:36     ` Eryndlia Mavourneen
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 19+ messages in thread
From: Frédéric Praca @ 2013-06-27 12:49 UTC (permalink / raw)


On Thu, 27 Jun 2013 13:19:18 +0200, Thomas Schmidt wrote:

> Hi all,
>
> [snipped]
>
> - I'm looking for some tutorial describing the most important
> differences between C++ and Ada.

Hello Thomas,
first, Welcome ;)

I would recommend you to read this
http://www.cs.uni.edu/~mccormic/4740/guide-c2ada.pdf 
it is quite old but still accurate for a "beginner" to understand why Ada 
is different from C/C++.


Regards
Fred

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 11:19   ` Thomas Schmidt
  2013-06-27 12:49     ` Frédéric Praca
@ 2013-06-27 14:36     ` Eryndlia Mavourneen
  2013-06-27 17:31       ` Jeffrey Carter
  2013-06-27 14:51     ` Shark8
  2013-06-27 17:29     ` Jeffrey Carter
  3 siblings, 1 reply; 19+ messages in thread
From: Eryndlia Mavourneen @ 2013-06-27 14:36 UTC (permalink / raw)


On Thursday, June 27, 2013 6:19:18 AM UTC-5, Thomas Schmidt wrote:
> Hi all,
>    . . .
> I think the best way to learn is in using 
> "real" jobs than examples simplifying the world. It would be a great 
> deal to write my own neural net simulator in Ada!
> 
> Thanks
> Thomas

Agreed!  This is how I learned Ada back in the early '80s after having read the LRM (that funny, green paperback with nothing printed on the spine).  I wrote an application in VAX Ada (became DEC Ada later) which had to access kernel-memory lists and be multi-tasking.  I wrote it 3 different ways in order to learn different aspects of Ada.  I was pleased with the 3rd way and sold it.

-- Eryndlia Mavourneen


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 11:19   ` Thomas Schmidt
  2013-06-27 12:49     ` Frédéric Praca
  2013-06-27 14:36     ` Eryndlia Mavourneen
@ 2013-06-27 14:51     ` Shark8
  2013-06-27 17:29     ` Jeffrey Carter
  3 siblings, 0 replies; 19+ messages in thread
From: Shark8 @ 2013-06-27 14:51 UTC (permalink / raw)


On Thursday, June 27, 2013 5:19:18 AM UTC-6, Thomas Schmidt wrote:
> - I'm looking for some tutorial describing the most important 
> differences between C++ and Ada.

For a high-level/managerial comparison there's this study:
http://archive.adaic.com/intro/ada-vs-c/cada_art.pdf

For a more general-feature/approach comparison:
http://archive.adaic.com/intro/ada-vs-c/ada-vs-c.html

Then there's the tail-end of a tutorial I wrote (just skip the rest) for some of the basics:
http://blog.projectpolymath.org/ada-2012-tutorial_01/

There's some other comparisons here (though I don't know how recent/relevant they are to your particular need):
http://archive.adaic.com/intro/c.html

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 11:19   ` Thomas Schmidt
                       ` (2 preceding siblings ...)
  2013-06-27 14:51     ` Shark8
@ 2013-06-27 17:29     ` Jeffrey Carter
  3 siblings, 0 replies; 19+ messages in thread
From: Jeffrey Carter @ 2013-06-27 17:29 UTC (permalink / raw)


On 06/27/2013 04:19 AM, Thomas Schmidt wrote:
>
> - I'm looking for some tutorial describing the most important differences
> between C++ and Ada.

An excellent tutorial for experienced programmers is Riehle's "Ada Distilled":

http://www.adaic.org/wp-content/uploads/2010/05/Ada-Distilled-24-January-2011-Ada-2005-Version.pdf

-- 
Jeff Carter
"I didn't squawk about the steak, dear. I
merely said I didn't see that old horse
that used to be tethered outside here."
Never Give a Sucker an Even Break
103


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 14:36     ` Eryndlia Mavourneen
@ 2013-06-27 17:31       ` Jeffrey Carter
  2013-06-27 17:45         ` Simon Wright
  2013-06-27 18:33         ` Eryndlia Mavourneen
  0 siblings, 2 replies; 19+ messages in thread
From: Jeffrey Carter @ 2013-06-27 17:31 UTC (permalink / raw)


On 06/27/2013 07:36 AM, Eryndlia Mavourneen wrote:
>
> This is how I learned Ada back in the early '80s after having read the LRM (that funny, green paperback with nothing printed on the spine).

Funny, my copy of the ARM-83 has "REFERENCE MANUAL FOR THE ADA PROGRAMMING 
LANGUAGE" on the spine.

-- 
Jeff Carter
"I didn't squawk about the steak, dear. I
merely said I didn't see that old horse
that used to be tethered outside here."
Never Give a Sucker an Even Break
103


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 17:31       ` Jeffrey Carter
@ 2013-06-27 17:45         ` Simon Wright
  2013-06-27 23:26           ` Randy Brukardt
  2013-06-27 18:33         ` Eryndlia Mavourneen
  1 sibling, 1 reply; 19+ messages in thread
From: Simon Wright @ 2013-06-27 17:45 UTC (permalink / raw)


Jeffrey Carter <spam.jrcarter.not@spam.not.acm.org> writes:

> On 06/27/2013 07:36 AM, Eryndlia Mavourneen wrote:
>>
>> This is how I learned Ada back in the early '80s after having read
>> the LRM (that funny, green paperback with nothing printed on the
>> spine).
>
> Funny, my copy of the ARM-83 has "REFERENCE MANUAL FOR THE ADA
> PROGRAMMING LANGUAGE" on the spine.

So does mine (blue, fake 7-segment LED lettering in white). I think it
came with the Telesoft compiler.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 17:31       ` Jeffrey Carter
  2013-06-27 17:45         ` Simon Wright
@ 2013-06-27 18:33         ` Eryndlia Mavourneen
  2013-06-27 20:31           ` Jeffrey Carter
  1 sibling, 1 reply; 19+ messages in thread
From: Eryndlia Mavourneen @ 2013-06-27 18:33 UTC (permalink / raw)


On Thursday, June 27, 2013 12:31:42 PM UTC-5, Jeffrey Carter wrote:
> On 06/27/2013 07:36 AM, Eryndlia Mavourneen wrote:
> 
> > This is how I learned Ada back in the early '80s after having read the LRM (that funny, green paperback with nothing printed on the spine).
> 
> Funny, my copy of the ARM-83 has "REFERENCE MANUAL FOR THE ADA PROGRAMMING 
> LANGUAGE" on the spine.

That is funny.  The copy I bought was from a government bookstore in the Federal Reserve Bank of Boston building, and I believe this was circa 1981-82, as I was there on business for a particular company.  Perhaps they got their act together on this at a later date.

-- Eryndlia Mavourneen


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 18:33         ` Eryndlia Mavourneen
@ 2013-06-27 20:31           ` Jeffrey Carter
  2013-06-27 23:29             ` Randy Brukardt
  0 siblings, 1 reply; 19+ messages in thread
From: Jeffrey Carter @ 2013-06-27 20:31 UTC (permalink / raw)


On 06/27/2013 11:33 AM, Eryndlia Mavourneen wrote:
>
> That is funny.  The copy I bought was from a government bookstore in the
> Federal Reserve Bank of Boston building, and I believe this was circa
> 1981-82, as I was there on business for a particular company.  Perhaps they
> got their act together on this at a later date.

That would be ARM-80, a different animal altogether from my ARM-83.

-- 
Jeff Carter
"I didn't squawk about the steak, dear. I
merely said I didn't see that old horse
that used to be tethered outside here."
Never Give a Sucker an Even Break
103

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 17:45         ` Simon Wright
@ 2013-06-27 23:26           ` Randy Brukardt
  2013-06-28  0:52             ` Jeffrey Carter
  0 siblings, 1 reply; 19+ messages in thread
From: Randy Brukardt @ 2013-06-27 23:26 UTC (permalink / raw)



"Simon Wright" <simon@pushface.org> wrote in message 
news:ly4ncjla6i.fsf@pushface.org...
> Jeffrey Carter <spam.jrcarter.not@spam.not.acm.org> writes:
>
>> On 06/27/2013 07:36 AM, Eryndlia Mavourneen wrote:
>>>
>>> This is how I learned Ada back in the early '80s after having read
>>> the LRM (that funny, green paperback with nothing printed on the
>>> spine).
>>
>> Funny, my copy of the ARM-83 has "REFERENCE MANUAL FOR THE ADA
>> PROGRAMMING LANGUAGE" on the spine.
>
> So does mine (blue, fake 7-segment LED lettering in white). I think it
> came with the Telesoft compiler.

Ours came from the government printing office (I think), and have nothing on 
a spine except a hand-written "Ada Reference Manual 1983" in red marker. I 
suspect that I added those relatively recently to keep them straight from 
the similar "Ada Reference Manual 1980" which is next to it on the library 
shelf.

There were other versions that I remember seeing, but I think most people 
had the "government" version.

                                                 Randy.




^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 20:31           ` Jeffrey Carter
@ 2013-06-27 23:29             ` Randy Brukardt
  0 siblings, 0 replies; 19+ messages in thread
From: Randy Brukardt @ 2013-06-27 23:29 UTC (permalink / raw)


"Jeffrey Carter" <spam.jrcarter.not@spam.not.acm.org> wrote in message 
news:kqi760$3vu$1@dont-email.me...
> On 06/27/2013 11:33 AM, Eryndlia Mavourneen wrote:
>>
>> That is funny.  The copy I bought was from a government bookstore in the
>> Federal Reserve Bank of Boston building, and I believe this was circa
>> 1981-82, as I was there on business for a particular company.  Perhaps 
>> they
>> got their act together on this at a later date.
>
> That would be ARM-80, a different animal altogether from my ARM-83.

The 1980 version also has a green wrapper (a slightly deeper green today, 
although I think its the 1983 versions that have faded more). Neither the 
1980 nor the 1983 versions have anything on the spine other than the text I 
hand-wrote at some point (relatively recently, I think, as I recall having 
trouble finding the right document when answering some Adam B. question, and 
I then decided to label them. I think the red marker is one that RRS gave 
away at tradeshows in the late 1990s, so it couldn't have been labeled until 
then).

                          Randy.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: "accessibility check failed" on Node
  2013-06-27 23:26           ` Randy Brukardt
@ 2013-06-28  0:52             ` Jeffrey Carter
  0 siblings, 0 replies; 19+ messages in thread
From: Jeffrey Carter @ 2013-06-28  0:52 UTC (permalink / raw)


On 06/27/2013 04:26 PM, Randy Brukardt wrote:
> "Simon Wright" <simon@pushface.org> wrote in message
> news:ly4ncjla6i.fsf@pushface.org...
>> Jeffrey Carter <spam.jrcarter.not@spam.not.acm.org> writes:
>>>
>>> Funny, my copy of the ARM-83 has "REFERENCE MANUAL FOR THE ADA
>>>
>>
>> So does mine (blue, fake 7-segment LED lettering in white). I think it
>> came with the Telesoft compiler.
>
> Ours came from the government printing office (I think), and have nothing on
> a spine except a hand-written "Ada Reference Manual 1983" in red marker. I
> suspect that I added those relatively recently to keep them straight from
> the similar "Ada Reference Manual 1980" which is next to it on the library
> shelf.

Now that I look at it more closely, it actually has "REFERENCE MANUAL FOR THE 
Ada® PROGRAMMING LANGUAGE" on the spine. Inside it says "For sale by the 
Superintendent of Documents, U.S. Government Printing Office, Washington, D.C. 
20402". I probably got it in 1984, from Martin Marietta.

-- 
Jeff Carter
"I didn't squawk about the steak, dear. I
merely said I didn't see that old horse
that used to be tethered outside here."
Never Give a Sucker an Even Break
103

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2013-06-28  0:52 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-26 23:01 "accessibility check failed" on Node Thomas Schmidt
2013-06-26 23:45 ` Shark8
2013-06-26 23:58 ` Jeffrey Carter
2013-06-27  7:36 ` Georg Bauhaus
2013-06-27  7:49 ` Dmitry A. Kazakov
2013-06-27  8:24 ` Simon Wright
2013-06-27 11:19   ` Thomas Schmidt
2013-06-27 12:49     ` Frédéric Praca
2013-06-27 14:36     ` Eryndlia Mavourneen
2013-06-27 17:31       ` Jeffrey Carter
2013-06-27 17:45         ` Simon Wright
2013-06-27 23:26           ` Randy Brukardt
2013-06-28  0:52             ` Jeffrey Carter
2013-06-27 18:33         ` Eryndlia Mavourneen
2013-06-27 20:31           ` Jeffrey Carter
2013-06-27 23:29             ` Randy Brukardt
2013-06-27 14:51     ` Shark8
2013-06-27 17:29     ` Jeffrey Carter
2013-06-27 10:46 ` Stephen Leake

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox