We belive that the truth finally has caught with the following, retired myths.
Funs used to be very slow, slower than apply/3
. Originally, funs were implemented using nothing more than compiler trickery, ordinary tuples, apply/3
, and a great deal of ingenuity.
But that is history. Funs was given its own data type in R6B and was further optimized in R7B. Now the cost for a fun call falls roughly between the cost for a call to a local function and apply/3
.
List comprehensions used to be implemented using funs, and in the old days funs were indeed slow.
Nowadays, the compiler rewrites list comprehensions into an ordinary recursive function. Using a tail-recursive function with a reverse at the end would be still faster. Or would it? That leads us to the myth that tail-recursive functions are faster than body-recursive functions.
© 2010–2017 Ericsson AB
Licensed under the Apache License, Version 2.0.