Arc Forumnew | comments | leaders | submitlogin
3 points by almkglor 6105 days ago | link | parent

Variadic functions now work:

  (set list
    (fn rest
      rest))

  (prn (list 9 8 7 6 5 4 3 2 1))


2 points by sacado 6105 days ago | link

wow, congratulations, you are much more productive than I am ! I won't work a lot on the compiler this week as I am far from my own computer, so I guess many things will have changed next time I'll explore the code :)

-----

2 points by almkglor 6105 days ago | link

Thanks ^^. I'm not that productive, really - I haven't figured out yet how to properly handle environments like so:

  (let private-variable nil
    (set set-private
      (fn (x) (set private-variable x)))
    (set get-private
      (fn () private-variable)))
I've been circling this problem for some time now, getting nowhere quick.

The problem is that the current style of implementing closures - where local and closure variables are copied to the closure structure - strikes me as a premature optimization. A useful one - if closures are not nested, then all variable references are O(1). However for shared mutable variables we need to use a different strategy. I'm trying to figure out some way of retaining the current closure style for cases where variables are not mutated, versus for cases that closure variables are.

BTW how come no one else seems to want to work on the compiler? It seems that aside from you I'm the only commiter?

-----

1 point by absz 6104 days ago | link

Well, I'm watching with fascination, but it's over my head. I'm working through Essentials of Programming Languages (Friedman, Wand, and Haynes), though, so maybe soon ;)

-----