given the general arc of the software world toward a browser monoculture owned or funded exclusively by ad companies it doesn't seem like a great idea to design new standards and tools which are reliant on this substrate. it should instead be the goal to support the browser as one of many platforms
old games used either a framebuffer or "graphics modes" which would do some configurable sequence of compositing operations; background layers, sprites, etc. modern graphics cards are built for rendering 3d scenes. You prepare big buffers representing meshes in one of a handful of formats and then pump those through a shader pipeline, the most basic of which includes vertex and fragment shader programs
even if you want to draw a 2d image, it is logically drawn in 3d on these systems; perhaps as a chunk of texture memory being drawn on a quad made of two triangles
you really don't even want to know how much shit goes into something as apparently simple as text rendering
@JohnE i think the result from the draw function in iKe would be nicer if it was allowed to be hierarchical, with nodes representing translations, rotations, and scaling
btw i removed keywords from the parser. the most useful was "in", which is annoying to use with brackets. i overloaded x':y for in. i'll have to see how it works out.
I think the tail arguments to K have to be k objects, not raw integers. passing (int)10 is invalid, but {x} doesn't touch the invalid object and so things go fine
in the second case you're reading the length of a function, which doesn't really make sense since a function isn't an array
I think r0 = K("{ 2 3 #!x }",ai(10)); (A*)_V(r0) should be a pointer to the two items of 2 3#!x
r0 = K("{!x}",ai(10)); (B*)_V(r0) should be a pointer to the items of the result. But that's only for 8-bit results, you'd need H* for 16-bit, I* for 32-bit, L* for 64-bit
(i'm guessing everything here, i don't have ngn/k set up to play around with)
@ngn could work. there should definitely be a leading symbol or something identifying the operation; iKe's approach doesn't really scale out to a wider set of drawing operations