よいGOTOとしてのクロージャ : ハンドラ関数に渡すクロージャ

悪いGOTOとしてのクロージャ : 制御構造に干渉するクロージャ
c = (\(f,xs) -> " and " ++ (f xs))
func [x] = x
func (x:xs) = x ++ (c (func, xs))