Pluck and Select
pluck() extracts a single field; select() picks multiple fields.
Example 027 of the basic Soma programs: a small, commented program that teaches one thing. Every output below was printed by soma 3.2.4 when this page was built.
How it is built
The cell PluckSelect has no face and no memory. Handlers: run (line 14).
The source
027_pluck_select.cell
// ============================================================================
// 027 — Pluck and Select
// ============================================================================
// pluck() extracts a single field; select() picks multiple fields.
//
// Run: soma run 027_pluck_select.cell run
// Expect:
// names: ["Alice", "Bob", "Carol"]
// selected: [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}, {"name": "Carol", "age": 35}]
// distinct cities: [{"city": "Paris"}, {"city": "London"}]
cell PluckSelect {
on run() {
let people = list(
map("name", "Alice", "age", 30, "city", "Paris"),
map("name", "Bob", "age", 25, "city", "London"),
map("name", "Carol", "age", 35, "city", "Paris")
)
// pluck() extracts one field into a flat list
let names = pluck(people, "name")
print("names: {names}")
// select() picks specific fields, returning maps
let subset = select(people, "name", "age")
print("selected: {subset}")
// distinct() removes duplicates based on a field
let unique_cities = distinct(people, "city")
print("distinct cities: {unique_cities}")
return "done"
}
}What the toolchain says
$ soma check 027_pluck_select.cell
✓ All checks passed.$ soma run 027_pluck_select.cell run
names: ["Alice", "Bob", "Carol"]
selected: [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}, {"name": "Carol", "age": 35}]
distinct cities: ["Paris", "London"]
done