Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I just don't understand why there are both gen and proc functions. Why have a separate kind of thing for functions that don't return anything?


Functions aren't supposed to have side effects and procs are. It makes sense since functions without side effects would allow for some nice compiler optimizations. The part that scares me is that the compiler doesn't enforce no side effects. This means you need to be extra careful when using someone else's code.


Yeah, I got that, but gen's and proc's both have side effects. Why?


Basically this is to support "expression" like syntax such as people are used to in C, for example i++ and x=y are expressions with side effects in C and a lot of C idioms depend on such things. This kind of thing was originally not allowed but I personally found it clumsy to manually split out the imperative parts from the functional parts, so I taught the compiler how to do it for me :)


But those expressions also return things. Why can't they be gen? Why would I use a proc instead? It seems like I must be missing something, but I can't see it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: