# Slides: ICON Python dycore - frontend overview
###### tags: `frontend`
---
Datastructures
---
$$\texttt{Field[}
\underbrace{\texttt{[Vertex, K]}}_{\text{Position type}}\texttt{, }
\underbrace{\texttt{gt.float64}}_{\text{Value type}}\texttt{]}$$
<!-- A mapping from a position to a value. -->
---
$$\small\begin{aligned}\texttt{Iterator[}
\underbrace{\texttt{[Vertex, K]}}_{\text{Current position type}}\texttt{, }
\underbrace{\texttt{[Edge, K]}}_{\text{Field position type}}\texttt{, }
\underbrace{\texttt{gt.float64}}_{\text{Value type}}\texttt{]}\end{aligned}$$
<!--
A position together with a field
As soon as the type of the current position and of the backing fields position match an iterator matches a value.
-->
---
## Beautified Iterator View
---
### Shift + Deref
Assume
```python
it: Iterator[[Vertex, K], [Edge, K], gt.float64]
```
then
```python
it(V2E[0])
```
gives the value of the first edge neighbor to the current iterators position.
---
Local Operator
```python=
@gt.local_operator
def average(it: Iterator[[Vertex, K], Iterator[Edge, K], DT]):
return it(V2E[0])+it(V2E[1])+it(V2E[2])+it(V2E[3])
```
{"metaMigratedAt":"2023-06-16T15:05:21.894Z","metaMigratedFrom":"Content","title":"Slides: ICON Python dycore - frontend overview","breaks":false,"contributors":"[{\"id\":\"fabd8852-0b5d-4bad-be23-300f4d46cf54\",\"add\":1249,\"del\":102}]"}