Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Chicken Scheme internals: the garbage collector (2014) (more-magic.net)
94 points by tosh on March 19, 2019 | hide | past | favorite | 8 comments


I wanted to learn a LISP-like language and tried Chicken for a bit and then switched to Racket. Reason: Documentation. I constantly got stuck with Chicken, often because the documentation available is for a previous version. No such problems with Racket and their, imho, excellent guide.

No doubt Chicken is a great language with cool features, it's just not very beginner friendly.


The documentation for eggs of the previous version has a link at the very top to the latest version.

For other cases, please consider letting us know exactly where you got stuck on IRC or on the mailinglist. Without feedback we can't fix things! The community is very friendly to beginners, even if the documentation isn't.


This I have also found to be the case, though ultimately I also focused more on learning Racket because, coming from Python, I was used to a more "batteries included" experience.


I really like Chicken but I switched for similar reasons. Also, some of the eggs I wanted to use won't work on my system. Still I think Chicken is really rad and I'd use it again.


Previous discussion: https://news.ycombinator.com/item?id=7499101

Unfortunately, the pipeline.com links no longer work, and I haven’t been able to coax the Wayback Machine into giving me more than the first page of the Cheney on the MTA paper.


This link works for me:

https://web.archive.org/web/20170811235424/http://home.pipel...

That site was one of the better collections of lisp technical papers. I hope it's not gone for good, it was there earlier this year.


It's gone up & down a few times; I really hope that it hasn't gone for good.


Cheney-on-the-MTA is a classic. tl;dr:

1. Transform into continuation-passing style.

2. Use the C stack as the young generation by calling each continuation as an ordinary C function.

3. When the stack reaches a limit, copy all reachable objects to the heap, "free" the young gen via longjmp() back to the bottom of the stack, and continue on.




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

Search: