freenode/#clasp - IRC Chatlog
Search
18:36:25
karlosz
in terms of eliminating unneceessary closures, we can inline functions which don't escape. for recursive functions, would it be better to lambda lift them?
18:39:48
karlosz
closures are expensive to make in clisp, im not sure if passing an arg would be faster in all implementations
0:11:51
WhoTookMyName
Hello, is there any way I can get a binary? I don't think I have the resources to generate one. I can run a VM for whatever system.
1:22:29
karlosz
a very useful optimization for more functoinal programs: contification. i.e. transforming tail calls between local functions into the first order flow graph. ie. making something like (labels ((loop* () (loop*))) ()) compile to the same code as (loop)
1:22:53
karlosz
and the paper https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwjp3tDHpdzcAhVFjlQKHSIZA2wQFjABegQIBhAC&url=http%3A%2F%2Fwww.mlton.org%2Fguide%2F20130715%2FReferences.attachments%2FFluetWeeks01.pdf&usg=AOvVaw2PLS7OE1h8ISNrg_kZWrys
1:26:06
karlosz
that way you can utilize all the first order optimizations and not have to reason about higher order functions
1:40:59
karlosz
im not quite sure why dominance information is needed in the original paper though; our ir doesn't express continuation information explicitly but it seems like its enough just to check for tail recursive calls and let inlining take care of the rest
2:35:24
beach
minion: Memo for karlosz: Lambda lifting is a good thing in general, but in your example, you modified the signature of a function that is returned, and that would not be correct.
2:54:24
Bike
i'm curious about this cont thing, though i don't know how often it will come up in CL style