public function fold($start_value, $iteration) {
        return $this->outer_fmap(function($contents) use ($start_value, $iteration) {
            $value = $start_value;
            foreach($contents as $content) {
                $value = $iteration($value, $content);
            }
            return $value;
        });
    }