d1 $ note ((scaleP scalePattern $ off 4 ((+ 2 ).slow 2) $ off 1 (inversion.slow 2) $ off 3 (inversion.slow 3) $ off 1.5 ((+ 2).rev.slow 2) $ generateMelodicSeed ))#s "[pe-gtr:10,midi]" #gain 1 #orbit 0 #midichan 1
inversion = (* (-1))
scalePattern = slow 16 "
d9 $ midicmd "start" # s "midi"
Many functional languages enable code to be evaluated lazily by default. This means the the code is not executed until the moment when the final return value is needed for interaction with the outside world. This enables functions to manipulate otherwise impossible data structures, such as infinite lists, so long as, by the time the final call is made, the functions are composed in such a way the limits the size of the data. Lazy evaluation pairs well with closures and partial application in enabling the programmer to compose functionality together.
Notes mentioning this note
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.