generateMelodicSeed = slow 4 $linger 0.5$ repeatCycles 3 -- $palindrome \n$ (+ (slow (irand (4)+1) (sometimes (inversion) (run (irand (4)+1))))) $slow ((irand 3) + 1)$ e ("x"<~>(irand 8)) 8 $"x*16"<~>(irand 5)   do d9$ midicmd "stop" # s "midi" hush   scalePattern = slow 12 ""   do cps (86/60/2) d9 \$ midicmd "midiClock*48" # s "midi" 

Partial Application

Related to closures, Partial application is the idea that, when supplying less than the required number of arguments for a function, it should not create an error, but rather return a closure that “encloses” over the partially applied arguments. This function then would take the missing arguments as its input and call the original function with all the data together. It is not a common feature outside of pure functional languages like Haskell. However, some languages have add on libraries to simulate this effect.

The ability to partially apply functions makes it easier to compose functions together.