Previous Page Next Page Contents

@ -- compose functions

Introduction

f@g represents the composition x -> f(g(x)) of the functions f and g.

Call(s)


f @ g @ ... _fconcat(f, g...)

Parameters

f, g... - functions

Returns

an expression of type "_fconcat".

Overloadable:

f, g, ...

Related Functions

@@

Details

Example 1

The following function h is the composition of the system functions abs and sin:

>> h := abs@sin
                                  abs@sin
>> h(x), h(y + 2), h(0.5)
                abs(sin(x)), abs(sin(y + 2)), 0.4794255386

The following functional expressions represent polynomials:

>> f := id^3 + 3*id - 1: f(x), (f@f)(x)
                     3               3           3     3
              3 x + x  - 1, 9 x + 3 x  + (3 x + x  - 1)  - 4

The random generator random produces nonnegative integers with 12 digits. The following composition of float and random produces random floating point numbers between 0.0 and 1.0:

>> rand := float@random/10^12: rand() $ k = 1..12
      0.427419669, 0.3211106933, 0.3436330737, 0.4742561436,
      
         0.5584587189, 0.7467538305, 0.03206222209, 0.7229741218,
      
         0.6043056139, 0.7455800374, 0.2598119527, 0.3100754872

In conjunction with the function map, the composition operator @ is a handy tool to apply composed functions to the operands of a data structure:

>> map([1, 2, 3, 4], (PI + id^2)@sin),
   map({1, 2, 3, 4}, cos@float) 
                  2             2             2             2
      [PI + sin(1) , PI + sin(2) , PI + sin(3) , PI + sin(4) ],
      
         {-0.9899924966, -0.6536436209, -0.4161468366, 0.5403023059}
>> delete h, f, rand:

Example 2

Some simplifications of functional expressions are possible via simplify:

>> cos@arccos + exp@ln = simplify(cos@arccos + exp@ln)
                        cos@arccos + exp@ln = 2 id

Changes




Do you have questions or comments?


Copyright © SciFace Software GmbH & Co. KG 2000