comp.lang.ada
 help / color / mirror / Atom feed
From: "Vinzent Hoefler" <0439279208b62c95f1880bf0f8776eeb@t-domaingrabbing.de>
Subject: Re: Callback in Ada
Date: Sat, 27 Nov 2010 11:46:40 +0100
Date: 2010-11-27T11:46:40+01:00	[thread overview]
Message-ID: <op.vmtr72q3lzeukk@jellix.jlfencey.com> (raw)
In-Reply-To: 8lc2d0Fb6jU1@mid.individual.net

Georg Maubach wrote:

> today I learnt what a callback function is and also how it is used in
> Python. I have tested the following code which runs in Python:
>
> def apply_to (function, valueList):
[...]

> Values doubled: 2, 4, 6, 8, 10
> Values powered: 1, 4, 9, 16, 25
>
> How would I do that in Ada?

The important thing is the Callback type and the 'Access attribute for the
function which you like to call.

-- 8< --
with Ada.Text_IO;

procedure Callback is

     function Duplicate (Value : in Integer) return Integer is
     begin
        return Value * 2;
     end Duplicate;

     function Power (Value : in Integer) return Integer is
     begin
        return Value * Value;
     end Power;

     type Int_List is array (Positive range <>) of Integer;

     type Callback is access function (Value : in Integer) return Integer;

     procedure Apply_To (Operation : Callback; Values : Int_List) is
        R : Integer;
     begin
        for V in Values'Range
        loop
           R := Operation (Values (V));
           Ada.Text_IO.Put (Integer'Image (R));
        end loop;

        Ada.Text_IO.New_Line;
     end Apply_To;

     Value_List : constant Int_List := (1, 2, 3, 4, 5);

begin
     Apply_To (Duplicate'Access, Value_List);
     Apply_To (Power'Access,     Value_List);
end Callback;
-- 8< --

Vinzent.



  parent reply	other threads:[~2010-11-27 10:46 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-27  9:47 Callback in Ada Georg Maubach
2010-11-27 10:11 ` Dmitry A. Kazakov
2010-11-27 10:22 ` Ludovic Brenta
2010-11-27 11:04   ` Vinzent Hoefler
2010-11-27 22:05   ` Maciej Sobczak
2010-11-27 10:26 ` Alex Mentis
2010-11-27 10:46 ` Vinzent Hoefler [this message]
2010-11-27 11:32 ` Georg Bauhaus
2010-11-27 21:11   ` Jeffrey Carter
2010-11-27 21:20     ` Dmitry A. Kazakov
2010-11-28 21:35       ` Maciej Sobczak
2010-11-29  8:41         ` Dmitry A. Kazakov
2010-11-29 10:12           ` Maciej Sobczak
2010-11-29 11:04             ` Dmitry A. Kazakov
2010-11-30  1:32               ` Randy Brukardt
2010-11-30  8:38                 ` Dmitry A. Kazakov
2010-11-30  9:14                 ` AdaMagica
2010-11-30 12:37                   ` Georg Bauhaus
2010-11-30 20:28                     ` Randy Brukardt
2010-11-30 20:31                   ` Randy Brukardt
2011-01-01 16:46                 ` Yannick Duchêne (Hibou57)
2011-01-02 10:14                   ` AdaMagica
2011-01-02 14:11                     ` Robert A Duff
2011-01-02 15:15                       ` AdaMagica
2011-01-02 15:28                         ` Robert A Duff
2011-01-02 15:38                       ` Alex Mentis
2011-01-02 15:44                         ` Robert A Duff
2011-01-03 21:38                           ` Randy Brukardt
2011-01-04  0:11                             ` Robert A Duff
2011-01-04 18:33                             ` Alex Mentis
2011-01-04 19:47                               ` Robert A Duff
2011-01-04 20:21                                 ` Randy Brukardt
2011-01-04 20:15                               ` Randy Brukardt
2010-11-29 15:24     ` Callback in Ada (User Data argument) Warren
2010-11-30  1:35       ` Randy Brukardt
2010-11-30 16:51         ` Warren
replies disabled

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