Skip to content

Instantly share code, notes, and snippets.

@teh
Created February 4, 2015 12:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save teh/6c79fd8ca3c560bf1caa to your computer and use it in GitHub Desktop.
Save teh/6c79fd8ca3c560bf1caa to your computer and use it in GitHub Desktop.
data generators
import random
import collections
# Generic n-ary tree
RoseTree = collections.namedtuple('RoseTree', 'a children')
def gen_int():
def _gen_int(rng, size):
return rng.randrange(0, size)
return _gen_int
def gen_v(g):
def _gen_v(rng, size):
n = rng.randrange(0, size)
return [g(rng, size) for _ in range(n)]
return _gen_v
def fmap(f, g):
def _fmap(rng, size):
result = g(rng, size)
return f(result)
return _fmap
rng = random.Random()
print gen_int()(rng, 20)
v = gen_v(gen_int())
print v(rng, 10)
print fmap(lambda x: x * 2, v)(rng, 10)
even_v = gen_v(fmap(lambda x: x * 2, gen_int()))
print even_v(rng, 10)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment