Nested function: Difference between revisions
→{{header|AppleScript}}
(Added FreeBASIC) |
|||
Line 67:
print( ( make list( ". " ) ) )
</lang>
==={{header|AppleScript}}===
<lang AppleScript>-- makeList :: String -> String
on makeList(separator)
set counter to 0
-- makeItem :: String -> String
script makeItem
on lambda(x)
set counter to counter + 1
(counter & separator & x & linefeed) as string
end lambda
end script
map(makeItem, ["first", "second", "third"]) as string
end makeList
-- TEST
on run
makeList(". ")
end run
-- GENERIC HIGHER ORDER FUNCTIONS
-- map :: (a -> b) -> [a] -> [b]
on map(f, xs)
tell mReturn(f)
set lng to length of xs
set lst to {}
repeat with i from 1 to lng
set end of lst to lambda(item i of xs, i, xs)
end repeat
return lst
end tell
end map
-- Lift 2nd class handler function into 1st class script wrapper
-- mReturn :: Handler -> Script
on mReturn(f)
if class of f is script then
f
else
script
property lambda : f
end script
end if
end mReturn</lang>
{{Out}}
<pre>1. first
2. second
3. third
</pre>
=={{header|C++}}==
|