Existuje nějaké intuitivní vysvětlení, proč "one hole context" (zipper) jde odvodit pomocí vzorečků pro derivace ze zápisu algebraického datového typu? Vysvětlení, proč to funguje na seznamech, stromech atd. mi přijde jednoduché, ale za boha nijak nemůžu pochopit, proč ty vzorečky vycházejí stejně jako v matematice pro spojité funkce, nevidím ani nejmenší konceptuální souvislost.
Pozor na terminologii, zipper není one hole context (ale obsahuje ho).
Vysvětlení existuje matematické, algebraické typy tvoří polookruh, takže se na nich můžeme vyřádit včetně derivací. To ale není intuitivní vysvětlení.
Intuitivně derivace popisuje funkci v konkrétním bodě. Je-li derivace například lineární, udává úhel, jakým funkce určitým bodem probíhá, ale už neříká, jak se chová jinde, byť "hodně" blízko. One hole context popisuje algebraický datový typ v konkrétním bodě (konfiguraci), ale už neříká, jak vypadá, když se o kousek posunu. Úplně polopaticky: Když traktor jezdí náhodně, ale s velkým poloměrem zatáčení po velkém poli, tak v mlze uvidím jeho trasu jen jako přímku a pokud mám kompas, můžu určit úhel, jakým se pohyboval. Když si stoupnu doprostřed spojového seznamu, tak uvidím jeden seznam před sebou a jeden za sebou, tedy dva seznamy. Akorát si stojím na aktuálním prvku, tj. nevidím ho (to je ta "díra"). Když k tomuto "kontextu" ten prvek přidám, dostanu zipper.
Jinak intuitivně to je kostrbaté, protože funkce jako takové se uvažují ve spojitém prostoru, kdežto algebraické typy jsou diskrétní. Dá se to taky představit tak, že ten spojitý prostoru kvantizuju, podobně jako když ve hrách s každým krokem (FPS) upravit pózy agentů a objektů krokově podle derivace. Pak je ta souvislost názornější.