Multiple distinct objects: Difference between revisions
Content added Content deleted
m (Remove from object-oriented category.) |
(→{{header|AppleScript}}: Slight reorganisation, updated primitives) |
||
Line 110: | Line 110: | ||
=={{header|AppleScript}}== |
=={{header|AppleScript}}== |
||
<lang AppleScript> |
<lang AppleScript>-- nObjects Constructor -> Int -> [Object] |
||
on nObjects(f, n) |
|||
⚫ | |||
on nObjects(n, foo) |
|||
⚫ | |||
end nObjects |
end nObjects |
||
-- TEST |
-- TEST |
||
on run |
on run |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
on lambda(_, i) |
|||
⚫ | |||
⚫ | |||
end script |
|||
⚫ | |||
--> {{index:1}, {index:2}, {index:3}, {index:4}, {index:5}, {index:6}} |
|||
end run |
end run |
||
⚫ | |||
on someConstructor(_, i) |
|||
⚫ | |||
⚫ | |||
-- GENERIC FUNCTIONS ----------------------------------------------------------- |
|||
-- GENERIC LIBRARY FUNCTIONS |
|||
-- map :: (a -> b) -> [a] -> [b] |
-- map :: (a -> b) -> [a] -> [b] |
||
on map(f, xs) |
on map(f, xs) |
||
tell mReturn(f) |
|||
set lng to length of xs |
|||
set lst to {} |
|||
repeat with i from 1 to lng |
|||
⚫ | |||
set |
set end of lst to lambda(item i of xs, i, xs) |
||
end repeat |
|||
return lst |
|||
end tell |
|||
set end of lst to mf's lambda(item i of xs, i, xs) |
|||
⚫ | |||
return lst |
|||
end map |
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 |
|||
-- range :: Int -> Int -> [Int] |
-- range :: Int -> Int -> [Int] |
||
Line 160: | Line 171: | ||
end repeat |
end repeat |
||
return lst |
return lst |
||
end range |
end range</lang> |
||
</lang> |
|||
{{Out}} |
{{Out}} |