import Data.List lengthUpToRepeat (p++[r]++q) | nub p == p && r `elem` p = length p + 1 main = lengthUpToRepeat [1,2,3,42,56,0,1] -- however, this does not terminate -- main = lengthUpToRepeat ([1,2,3,42,56]++[0..])