let flatten = (f=>out=>input=>f(f)(out)(input)) (f=> (out)=> input=> input.length === 0 ? out: f(f) ( // join function*/ ((arr)=>(val)=>[...arr, ...val]) (out) (input[0]) ) ( // slice function (([,...a])=>a) (input) ) ) ([]) 連flatMap都可以