# Reduction in Field View
###### tags: `functional cycle 7`
Appetite: 1 week (decide beginning of next week: MCH or Hannes)
## Goal
Implement reductions in the field view from frontend (parsing) to lowering. This is a standalone task, beginner task without dependencies.
## Syntax
```
sum(<field_expr>, axis=<dim>)
```
where `<field_expr>` is required to have dimension `<dim>`.
Notes:
For *normal* fields this requires that the field is *shifted* to be a field that includes the neighbor dimension, e.g.
```python=
v: Field[[Vertex], double]
sum(v(V2V), axis=V2V)
```
*Sparse* fields already have a neighbor dimension, e.g.
```python=
sparse: Field[Vertex, V2V]
sum(sparse, axis=V2V)
```
And for a combination you would have
```python
sum(sparse*vertex(V2V), axis=V2V)
```
## Rabbit holes
We have the following open design task which is explicitly not part of the project. If a field is shifted multiple times there is a ordering problem (which dimension is reduced, does it make sense to reduce an inner dimension, etc.), as e.g. in
```python=
inp: Field[[Vertex], double]
neighs: Field[[Vertex, V2E, E2V, V2E], double] = inp(V2E)(E2V)(V2E)
```
## No goal
Adding list comprehension syntax-sugar, like
```python
sum(vertex_field(v) for v in V2V)
```