Nested function: Difference between revisions

(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++}}==
9,659

edits