(В качестве предлога: название подражает названию Зачем нам нужны монады?)
Есть контейнеры (и indexed) (и hasochistic) и описания. Но контейнеры проблематичны, и к моему очень маленькому опыту сложнее думать с точки зрения контейнеров, чем с точки зрения описаний. Тип неиндексированных контейнеров изоморфен Σ
- это слишком неспецифично. Описание фигур и положений помогает, но в
⟦_⟧ᶜ : ∀ {α β γ} -> Container α β -> Set γ -> Set (α ⊔ β ⊔ γ)
⟦ Sh ◃ Pos ⟧ᶜ A = ∃ λ sh -> Pos sh -> A
Kᶜ : ∀ {α β} -> Set α -> Container α β
Kᶜ A = A ◃ const (Lift ⊥)
мы по существу используем Σ
, а не фигуры и позиции.
Тип строгоположительных свободных монадов над контейнерами имеет довольно прямое определение, но тип монад Freer
выглядит мне проще (и в некотором смысле Freer
монады даже лучше, чем обычные монады Free
как описанный в документе .
Итак, что мы можем делать с контейнерами лучше, чем с описаниями или чем-то еще?