last day (175 days later) » 

11:35 PM
I'll ungolf it so we can actually read what it's doing, just a sec.
Ungolfed version: tio.run/…
 
What is # (a,b)?
 
splitAt (length list/2) list returns the type ([.t], [.t]), which is equated to (a, b)
So it sets a to the first split part, and b to the second
I think it's like the let keyword in haskell?
 
Got it
Now, what are the two branches of the if?
 
(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]
 
Right now I have this
 
11:50 PM
Ah. Clean list comprehensions are synchronous over all sources prefixed with &, examples:
 
Without golfing, I have this
If a==[], does u==[]?
 
if a==[], length u < 2
because [1] gets split into ([],[1])
 
Is u ever []?
 
Nope
 
110 Can still be shorter
 

  last day (175 days later) »