(if(a > []) [[list]:[x ++ y \\ y <- fn b & x <- fn a ++ fn a ++ fn a]] []) = [[list]:[x ++ y \\ y <- fn b & x <- fn a ++ fn a ++ fn a]] when a is not the empty list, otherwise it's the empty list
it's like a C-style ternary, if(cond) true false
++ is list concatenation, and [head:tail] is cons - I don't know if cons in haskell needs the square brackets, but in Clean [1:[2,3]] is [1, 2, 3]