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.
next prev 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