On 07/24/2017 11:08 PM, Artyom Shalkhakov wrote:
2017-07-25 1:46 GMT+06:00 Aistis Raulinaitis <sheganin...@gmail.com>:
I agree, I think arrays are much overused in programming for the most part.
My thoughts on are that these libs should facilitate easier interop with the
existing JS libs rather than as a bedrock for a data structure on the
frontend. On the other hand, I like the idea of a finger tree
implementation. My only question is, since we have the choice, would it be
more appropriate to implement it using modules or type classes? My Haskell
background makes me lean in one direction, but I think it would be
interesting to have both. That being said, I should have the js array
library out in the next day or two. Mind you both of these libs in their
forEach functions call execF twice. So you are invoking the Ur/Web runtime
twice for each element. This shouldn't be too bad depending on the
calculation, but it's something to keep in mind.
Speaking of which, how is the VM implemented and are there any
low-hanging fruits to improve it?
That is a tough question to give a short answer to! However, you can
find the whole implementation within urweb/lib/js/urweb.js. The whole
runtime system is there, but the file is an upper bound on VM
complexity. It's under 2000 lines of code.
I haven't heard anyone complain about performance of client-side Ur/Web
code in years, as far as I can remember, so it's not clear there are any
high-priority issues on that front.
Ur mailing list