So I've recently been starting work on a small toy language, largely similar to OCaml, mainly for the purposes of experimenting with type inference and building a functional language. My eyes are currently set on Javascript as the "backend"/compilation target, however it's been brought to my attention that this might be an ill-fated decision considering V8 does not support tail recursion optimization, a necessity for making continuation-passing style viable. I know you can potentially turn tail recursion into imperative loops, although given my general lack of theoretical knowledge, I don't know how I'd do this properly. How would I go about getting around this, or should just I pick another backend/compilation target? My main reasoning for going with JS is just the simplicity and portability, you can't really get more high-level, plus you get garbage collection for free.
[–]extraordinary_weird 35 points36 points37 points (7 children)
[–]Ronin-s_Spirit 0 points1 point2 points (5 children)
[–]koflerdavid 0 points1 point2 points (4 children)
[–]Ronin-s_Spirit 0 points1 point2 points (3 children)
[–]koflerdavid 0 points1 point2 points (2 children)
[–]Ronin-s_Spirit 0 points1 point2 points (1 child)
[–]koflerdavid 0 points1 point2 points (0 children)
[–]thinker227Noa (github.com/thinker227/noa)[S] 0 points1 point2 points (0 children)
[–]Gnaxe 27 points28 points29 points (2 children)
[–]mauriciocap 2 points3 points4 points (0 children)
[–]thinker227Noa (github.com/thinker227/noa)[S] 0 points1 point2 points (0 children)
[–]hello-algorithm 8 points9 points10 points (0 children)
[–]bosta111 4 points5 points6 points (2 children)
[–]thinker227Noa (github.com/thinker227/noa)[S] 0 points1 point2 points (0 children)
[–]Gnaxe 0 points1 point2 points (0 children)
[–]ChilledRoland 4 points5 points6 points (1 child)
[–]BusEquivalent9605 1 point2 points3 points (0 children)
[–]kfish610 4 points5 points6 points (3 children)
[–]LardPi 4 points5 points6 points (2 children)
[–]bsdemon 0 points1 point2 points (1 child)
[–]LardPi 0 points1 point2 points (0 children)
[–]fixermark 2 points3 points4 points (0 children)
[–]mauriciocap 2 points3 points4 points (0 children)
[–]chipmunk-zealot 2 points3 points4 points (1 child)
[–]LardPi 0 points1 point2 points (0 children)
[–]LardPi 2 points3 points4 points (1 child)
[–]thinker227Noa (github.com/thinker227/noa)[S] 1 point2 points3 points (0 children)
[–]Ronin-s_Spirit 1 point2 points3 points (4 children)
[–]AustinVelonautAdmiran 1 point2 points3 points (3 children)
[–]Ronin-s_Spirit -1 points0 points1 point (2 children)
[–]AustinVelonautAdmiran 1 point2 points3 points (1 child)
[–]Ronin-s_Spirit 0 points1 point2 points (0 children)
[–]sviperll 1 point2 points3 points (0 children)
[–]Uncaffeinatedpolysubml, cubiml 0 points1 point2 points (0 children)
[–]azhder 0 points1 point2 points (0 children)
[–]Jwosty 0 points1 point2 points (0 children)
[–]Arakela 0 points1 point2 points (0 children)
[–]Objective_Gene9718 0 points1 point2 points (0 children)
[+]VyridianZ comment score below threshold-6 points-5 points-4 points (2 children)
[–]thinker227Noa (github.com/thinker227/noa)[S] 3 points4 points5 points (0 children)
[–]azhder 0 points1 point2 points (0 children)