bidirectionalization-combined-0.1: example/initHalf.txt
-- This program requires further preprocessing
-- to get effective "put" function.
--
-- However, "shap"ication makes the preprocess easier.
--
-- After the shapificatoin,
-- we can easily observe that the first parameter
-- of initHalfWork is useless.
initHalf [] = []
initHalf (a:x) = a:initHalfWork x x
initHalfWork xs [] = []
initHalfWork xs [x] = []
initHalfWork (a:x) (b:c:y)
= a:initHalfWork x y