Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
42
Task/Amb/Python/amb-5.py
Normal file
42
Task/Amb/Python/amb-5.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
from itertools import chain
|
||||
|
||||
|
||||
# amb :: [a] -> (a -> [b]) -> [b]
|
||||
def amb(xs):
|
||||
return lambda f: list(
|
||||
chain.from_iterable(
|
||||
map(f, xs)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
# when :: Bool -> [a] -> [a]
|
||||
def when(p):
|
||||
return lambda xs: xs if p else []
|
||||
|
||||
|
||||
# TEST ----------------------------------------------------
|
||||
|
||||
# joins :: String -> String -> Bool
|
||||
def joins(a, b):
|
||||
return a[-1] == b[0]
|
||||
|
||||
|
||||
print (
|
||||
amb(['the', 'that', 'a'])(
|
||||
lambda w1: when(True)
|
||||
|
||||
(amb(['frog', 'elephant', 'thing'])
|
||||
(lambda w2: when(joins(w1, w2))
|
||||
|
||||
(amb(['walked', 'treaded', 'grows'])
|
||||
(lambda w3: when(joins(w2, w3))
|
||||
|
||||
(amb(['slowly', 'quickly'])
|
||||
(lambda w4: when(joins(w3, w4))(
|
||||
|
||||
[w1, w2, w3, w4]
|
||||
))))))
|
||||
)
|
||||
)
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue