:yell "...Load example file" 
:load ./expl/AAIPExamples.hs
:y "...set simplification to TRUE"
:s +simplify

--:y "...generalise and test 'add'"
--:g add; :test add on "add (S(S(S(S(S Z))))) (S(S(S(S(S Z)))))"

:y "...generalise and test 'appenD'"
:g appenD; :test appenD on "appenD [1,1,1,1,1][2,2,2,2,2]"

:y "...generalise and test 'droP'"
:g droP; :test droP on "droP (S(S(S(S(S Z))))) [1,1,1,1,1,0,0,0]"

--:y "...generalise and test 'eveN'"
--:g eveN; :test eveN on "map eveN [Z,S Z, S (S Z), S(S(S Z)), S(S(S(S Z))), S(S(S(S(S Z)))), S(S(S(S(S(S Z))))), S(S(S(S(S(S(S Z))))))]"

:y "...generalise and test 'evenpos'"
:g evenpos; :test evenpos on "evenpos [1,2,3,4,5,6,7,8]"

--:y "...generalise and test 'eq'"
--:g eq; :test eq on "map (uncurry eq) [ (S(S(S(S(S(S Z))))),S(S(S(S(S(S Z)))))), (S(S(S(S(S Z)))),S(S(S(S(S(S(S Z))))))), (S(S(S(S(S(S(S Z)))))),S(S(S(S(S Z)))))]"

:y "...generalise and test 'iniT'"
:g iniT; :test iniT on "iniT [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'lasT'"
:g lasT; :test lasT on "lasT [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'lasts'"
:g lasts; :test lasts on "lasts [[1,2,3],[9,8,7,6,5,4,3],[3,3,3,3,3,3],[1,4,5,6,7,8,3]]"

:y "...generalise and test 'lengtH'"
:g lengtH; :test lengtH on "lengtH [1,2,3,4,5,6,7,8]"

--:y "...generalise and test 'odD'"
--:g odD; :test odD on "map odD [Z,S Z, S (S Z), S(S(S Z)), S(S(S(S Z))), S(S(S(S(S Z)))), S(S(S(S(S(S Z))))), S(S(S(S(S(S(S Z))))))]"

:y "...generalise and test 'odD, eveN'"
:g odD, eveN; :test odD, eveN on "map (\a -> (odd a, eveN a)) [Z,S Z, S (S Z), S(S(S Z)), S(S(S(S Z))), S(S(S(S(S Z)))), S(S(S(S(S(S Z))))), S(S(S(S(S(S(S Z))))))]"

:y "...generalise and test 'oddpos'"
:g oddpos; :test oddpos on "oddpos [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'repeatfirst'"
:g repeatfirst; :test repeatfirst on "repeatfirst [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'repeatlast'"
:g repeatlast; :test repeatlast on "repeatlast [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'reversE'"
:g reversE; :test reversE on "reversE [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'reversE, snoc'"
:g reversE, snoc; :test reversE, snoc on "reversE [1,2,3,4,5,6,7,8]"

--:y "...generalise and test 'reversE with snoc'"
--:g reversE with snoc; :test reversE with snoc on "reversE [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'shiftl'"
:g shiftl; :test shiftl on "shiftl [1,2,3,4,5,6,7,8]"

:y "...generalise 'sort' with 'insert'"
:g sort with insert; -- :test sort with insert on "sort [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'shiftr'"
:g shiftr; :test shiftr on "shiftr [1,2,3,4,5,6,7,8]"

--:y "...generalise and test 'snoc'"
--:g snoc; :test snoc on "snoc 9 [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'swap'"
:g swap; :test swap on "swap [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'switch'"
:g switch; :test switch on "switch [1,2,3,4,5,6,7,8]"

--:y "...generalise and test 'taiL'"
--:g taiL; :test taiL on "taiL [1,2,3,4,5,6,7,8]"

:y "...generalise and test 'takE'"
:g takE; :test takE on "takE (S(S(S(S(S Z))))) [1,1,1,1,1,0,0,0]"

:y "...generalise and test 'weave'"
:g weave; :test weave on "weave [1,1,1,1,1,0,0,0][2,2,2,2,2]"

:y "That's all! Finished!"
:q

