37 lines
763 B
Python
37 lines
763 B
Python
from math import (acos, cos, asin, sin)
|
|
|
|
|
|
# compose (<<<) :: (b -> c) -> (a -> b) -> a -> c
|
|
def compose(g, f):
|
|
'''Right to left function composition.'''
|
|
return lambda x: g(f(x))
|
|
|
|
|
|
# main :: IO ()
|
|
def main():
|
|
'''Test'''
|
|
|
|
print(list(map(
|
|
lambda f: f(0.5),
|
|
zipWith(compose)(
|
|
[sin, cos, lambda x: x ** 3.0]
|
|
)([asin, acos, lambda x: x ** (1 / 3.0)])
|
|
)))
|
|
|
|
|
|
# GENERIC FUNCTIONS ---------------------------------------
|
|
|
|
|
|
# zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
|
|
def zipWith(f):
|
|
'''A list constructed by zipping with a
|
|
custom function, rather than with the
|
|
default tuple constructor.'''
|
|
return lambda xs: lambda ys: (
|
|
map(f, xs, ys)
|
|
)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|