A kind of number. Opensource JS. Sandbox lambdas. TODO Make uncensored apps by dragNdrop universal lambda GPU Web3 Live 17ms 1megapix MMG๐ฎ P2p JITCompileSwarm
How the #widget will make and play games. Nothing but lambdas. Lambda chooses pixel colors. Gamepad joystick positions are lambdas. Drag and drop lambda onto lambda to find/create lambda. Gamepad drags itself in front of a snapshot of game, which forkEdits game to next state.
Possible yes, if public GitHub crawls pulled the repos into early training sets (Occamsfuncer is in the 2020 Arctic Code Vault). Low-star niche projects sometimes pass filters in datasets like The Stack variants.
But early LLM capabilities emerged from scale across trillions of diverse tokens, not any one pure-functions explanation. Lambda calculus and pure functional ideas were already widespread in textbooks, papers, and mainstream code long before.
Wikibinator203VM.js creates 1 global var: Wikibinator203, which is a js lambda to call on itself as a universal pattern calculus combinator. https://t.co/7jNgEajdZ1
Ive reached the point with Axgob that I need to "tie the quine knot" again, like I did in wikibinator203, to make the left child of every lambda called on its right child eval to that same lambda, by making the left child of every leaf be identityFunc and right child be that leaf
Wikibinator203VM.js is 1017 kB. I put so much into optimizing it that it got big and complicated and was hard to separate which parts are deterministic vs nondeterministic. In Axgob.js which is so far 49kB I'm using just ints in the lambdas, no doubles/floats, to keep it simple.
@max_paperclips Thats why I designed my wikibinator programming language so that every calculation is a self-modify, a fork in the immutable DAG forest of lambdas. I make 400,000 forks per second and can generate ids for them a few times slower than that. 1 of those can do big array math.
The design of wikibinator203 guarantees correct operation of the lazy-evaled DAG, at deterministic layers only, when computed in a peer to peer network across grandfather-paradoxes through wormholes across time, NP-hard SAT solver puzzles (have done 15k dimensions live in CPU)
Pausing wikibinator203 is a NO-OP since it has only 1 moment in time, has at its most core layer a 100% timeless deterministic immutable directed-graph between all possible lambda functions of that kind. This sparse data structure could be grown among many AIs and people.
I'll come back to wikibinator after @DagBallGame is online and few people playing it together. Dagball uses Ap.js (my new GPU language). Wikibinator will be used to scale up Dagball later, but for now its game state is stored in json. Wikibinator and Dagball will both use Ap.js
@cybrdelic I dont have any state. All computing is 1 moment that includes all possible pasts presents and futures, and I have a hash id for every one of them.
Dagball is opensource MIT licensed. Wikibinator203 is GNU AGPL3 with 3 extra permissions including classpath/linking exception. The viral-license of it does not expand to the MIT code, only to wikibinator parts. Its so if u get a lambda (DAG node) u can get its childs recursively
@harrisonpartch Id like wikibinator to handle the GPU itself, and there are places to hook it in, but this is what it can do without much changes, and I've got a game world to build asap.
@harrisonpartch The dagball game state will be very small. A small tree of code per GPU_circle and up to 1000 floats of state on screen at once, so maybe 30kB of state per screen. A wikibinator lambda can hold a float or byte array etc, or small pieces of logic or any combos.
@harrisonpartch I dont need it to do the raytracing, just to generate and transform dagball game state (quicksave/quickload) to other possible game states. These will be within the 400,000 lambdas per second limit.
@harrisonpartch First version did about 300 flops, cuz it computed all the bits as nand and or etc. Since then its using multiple JIT compilers together and can attach any javascript code at runtime to any lambda using pushEvaler((vm,func,param)=>{...what func(param) would return but faster...})
@harrisonpartch On browser console this [vm.eval('(Pair S T (Pair S T) (S T T))') === vm.eval('(S T T)'), vm.eval('(S T T (S T T) (Pair S T))') === vm.eval('(Pair S T)'), vm.eval('(S T T (S T T) (Pair S T))') === vm.eval('(S T T)')] returns [true, true, false]. Should scale up.
In theory, wikibinator will sync in massively multiplayer even if there are a million call/cc on sparse parts of the "game tree" of all possible games (dagball being 1 of them) at once. I have a 1 to 1 mapping between pattern-calculus lambdas and the positive integers.
The game state would get snapshotted (faster than 1 video frame) to a lambda, so there would be a cc ball, and calling another ball on cc would do something like call/cc, to return another game state ball, that if you use it, loads that modified game world https://t.co/sBci5kXP8R
I could put a wikibinator203 lambda in a ball by writing its hash id, and you could drag ball/lambda onto ball/lambda which finds or creates a ball/lambda. A ball called on the whole game world or part of it could give back a modified game world, or just play forward normally.
Maybe wikibinator opcodes should include these GPU opcodes or at least hook it in using the Plug (plugin) opcode. The pushEvaler((vm,func,param)=>{...}) function in wikibinator VM could just call the existing implementation since wikibinator fits multiple JIT compilers together.
ForestCurveFit in the dagball ape language should look something like this, and compile to a GLSL shader. The triangle loop (fcfTriangleLoop) has to be defined all at once and its outer loop var (diag) and inner loop var (upOrLeftOfDiag) refers to those 2 coordinate numbers in it