Task

Take a combined set of elements and apply a function to each element.




rebol [
    Title: "Array Callback"
    URL: http://rosettacode.org/wiki/Apply_a_callback_to_an_Array
]
 
map: func [
	"Apply a function across an array."
	f [native! function!] "Function to apply to each element of array."
	a [block!] "Array to process."
	/local x
][x: copy []  forall a [append x do [f a/1]]  x]
 
square: func [x][x * x]
 
; Tests:
 
assert: func [code][print [either do code ["  ok"]["FAIL"]  mold code]]
 
print "Simple loop, modify in place:"
assert [[1 100 81] = (a: [1 10 9]  forall a [a/1: square a/1]  a)]
 
print [crlf "Functional style with 'map':"]
assert [[4 16 36] = map :square [2 4 6]]
 
print [crlf "Applying native function with 'map':"]
assert [[2 4 6] = map :square-root [4 16 36]]