Multiplication tables: Difference between revisions
→{{header|AppleScript}}
Line 332:
<lang AppleScript>on run
end run
-- Int -> Int -> [[String]]
on table(m, n)
on lambdaX(x)▼
set mf to my closure's mf▼
{x & concatMap(mf's rng, mClosure(mf's lambdaY, {x:x}))}▼
end lambdaX▼
on lambdaY(y)▼
set x to my closure's x▼
if y < x then▼
{""}▼
end lambdaY▼
end script▼
{{"x"} & rng} & concatMap(rng, mClosure(mf's lambdaX, {mf:mf}))▼
▲ {""}
set rng to mf's rng
end table
-- [[String]] -> String
on showTable(lstTable)
on showCell(cell)▼
(characters -4 thru -1 of (" " & cell)) as string▼
end showCell▼
end script▼
intercalate(linefeed, map(lstTable, mClosure(mf's showLine, {mf:mf})))▼
end showTable
Line 383:
-- [a] -> (a -> b) -> [b]
on concatMap(xs, f)
end concatMap
-- a -> a -> [a]
on concat(a, b)
end concat
-- [a] -> (a -> b) -> [b]
on map(xs, f)
end map
-- [a] -> (a -> b) -> b -> [b]
on reduce(xs, f, startValue)
end reduce
-- Text -> [Text] -> Text
on intercalate(strText, lstText)
end intercalate
-- m..n
on range(m, n)
end range
Line 436:
-- Handler -> Script
on mReturn(f)
end mReturn
Line 445:
-- Handler -> Record -> Script
on mClosure(f, recBindings)
end mClosure</lang>
|