Functional Programming

From Federal Burro of Information
Jump to navigationJump to search

notes from the field.

In general,

new_collection = collection.map(function)

is a short-cut for:

new_collection[]
for (element in collection)
 new_collection[] += function(element)

And:

new_collection = collection.filter(function)

is a short-cut for:

new_collection[]
for (element in collection):
  if function(element):
    new_collection[] += function(element)

this

doubled = [1, 2, 3, 4, 5].map(x => x * 2)

is equivalent to:

doubled[]
for (x in [1, 2, 3, 4, 5]):
  doubled[] += x * 2

that


Example


you want to remove all the gcp images not in use, get all the current live instance, find their template, find the image in the template and "subtract" those from the list of all images.



source_images = instance
  .map(i => i.get_template)
  .map(i => i.get_source_image)

to_delete = gci.get_all()
  .filter(i => !source_images[i])
  .filter(i => i.age > 1m)

for i in to_delete:
  i.delete()