Monads/List monad: Difference between revisions

Content added Content deleted
(→‎{{header|AppleScript}}: Some simplification - normalised argument sequence in a couple of higher-order functions)
(→‎{{header|AppleScript}}: Renamed 2 script objects for better ratio of signal-to-noise)
Line 27: Line 27:
-- pythagoreanTriples :: Int -> [(Int, Int, Int)]
-- pythagoreanTriples :: Int -> [(Int, Int, Int)]
on pythagoreanTriples(maxInteger)
on pythagoreanTriples(maxInteger)
script lambdaX
script X
on lambda(x)
on lambda(X)
script lambdaY
script Y
on lambda(y)
on lambda(Y)
script lambdaZ
script Z
on lambda(z)
on lambda(Z)
if x * x + y * y = z * z then
if X * X + Y * Y = Z * Z then
unit([x, y, z])
unit([X, Y, Z])
else
else
[]
[]
Line 41: Line 41:
end script
end script
bind(lambdaZ, range(1 + y, maxInteger))
bind(Z, range(1 + Y, maxInteger))
end lambda
end lambda
end script
end script
bind(lambdaY, range(1 + x, maxInteger))
bind(Y, range(1 + X, maxInteger))
end lambda
end lambda
end script
end script
bind(lambdaX, range(1, maxInteger))
bind(X, range(1, maxInteger))
end pythagoreanTriples
end pythagoreanTriples
Line 129: Line 129:
end if
end if
end mReturn
end mReturn

</lang>
</lang>