Function as a value
Function can be used as a value in the following cases:
Class / constructor
Function definition is used in POOL also as a class description. Turtles (objects) of a class are created with
instructions newt
and newturtles
.
Function passed as an argument of these instruction becomes the constructor of the turtle / turtles.
Example 1:
to fig :n
to draw :a
let "p pos
let "h heading
rt 90 bk :a/2
repeat :nsides [fd :a lt 360 / :nsides]
setpos :p
seth :h
end
"nsides := :n
ht
end
"tri := (newt $fig 3)
"pnt := (newt $fig 5)
print :nsides @ :tri
print :nsides @ :pnt
(draw 100) @ :tri
(draw 100) @ :pnt
Output:
3
5
See also:
Classes and inheritance
Parallel tasks of turtles
Declaration of a timer handling function
Timer in POOL allows for sending a signal or launching a code in regular
time intervals. Such a code can be a list of instructions or a function passed as an argument to the
timer
instruction.
Example 2:
to fn :t :i :dt
print :t
end
"t := (timer $fn 500 0 5)
Output:
[1 27.203125]
[2 500.1953125]
[3 501.6484375]
[4 500.5078125]
[5 500.640625]
See also:
timer - create a timer
Declaration of an event handling function
Events raised in the user interface (such as mouse actions, use of buttons, etc) can launch
code. Such code can be declared with instructions like setonclick
,
setonchange
and analogous. These instructions accept as an argument
a list of instructions or a function.
Example 3:
to bhandler
print "Click...
end
"b := button "Test [20 10]
setonclick :b $bhandler
Output (on each push of the "Test" button):
Click!
Dynamic call to a function
Calls to functions can be dynamic in POOL programs. It allows to choose called function during
the program execution. In this case a function is passed as an argument of the call
instruction.
Example 4:
to f1 :x op sqrt :x end
to f2 :x op exp :x end
to f3 :x op log :x end
repeat 3 [print (call func word "f repcount 2)]
Output:
1.4142135623731
7.38905609893065
0.693147180559945
See also:
Dynamic call to a function
$, func - function
Table of Content