I appreciate your earlier WebGL submission - I've been meaning to take it apart.
On Thu, Jan 23, 2014 at 4:53 PM, Raul Miller <[email protected]> wrote: > I might do a mixin varient. I have also been thinking about if I > wanted to do a variant aimed at high performance for some test case. > But both of those imply more life and use for the approach than what I > currently have implemented. > > I think my first focus should be implementing something fun in webgl. > I have been playing with sketches and designs, but need to dive deeper > into documentation and get a bit experimental to connect where I am > right now with where I hope to go. > > Thanks, > > -- > Raul > > > On Thu, Jan 23, 2014 at 4:34 PM, Joe Bogner <[email protected]> wrote: > > Cool. It feels similar to underscore (http://underscorejs.org/) which > > has probably 1/10 of the ubiquity of jQuery which is still quite a > > bit. It's the first library that probably comes to mind for many > > people when it comes to 'make javascript more functional'. It's very > > approachable. I've also seen bilby.js (http://bilby.brianmckenna.org/) > > thrown around - it's like haskell for javascript. It's a bit too > > extreme for me. > > > > I like that yours has similar method naming to J. If you wanted to, > > you could also extend underscore to do that > > http://underscorejs.org/#mixin > > > > The chaining in yours is also implement in underscore (from the docs): > > > > var stooges = [{name: 'curly', age: 25}, {name: 'moe', age: 21}, > > {name: 'larry', age: 23}]; > > var youngest = _.chain(stooges) > > .sortBy(function(stooge){ return stooge.age; }) > > .map(function(stooge){ return stooge.name + ' is ' + stooge.age; }) > > .first() > > .value(); > > => "moe is 21" > > > > Thanks for sharing > > > > On Thu, Jan 23, 2014 at 4:23 PM, Raul Miller <[email protected]> > wrote: > >> Here's a gist of the current draft: > https://gist.github.com/anonymous/8587032 > >> > >> I must admit that I do not have very extensive tests yet, and I may > >> mistreat some edge cases. I am not sure if that matters. I'll paste my > >> tiny "test suite" at the bottom of this message. > >> > >> Thanks, > >> > >> -- > >> Raul > >> > >> <html><head><title>tests for a.js</title></head> > >> <body> > >> <pre id="out"></pre> > >> <script src="a.js"></script> > >> <script> > >> window.out= function(t) { > >> var log= document.getElementById('out'); > >> log.innerHTML+= t; > >> return t; > >> } > >> function maintain(f) { > >> var r; > >> try { > >> r= f(); > >> } catch (e) { > >> var t= f+' failed '+e; > >> alert(out(t)); > >> r= A.one; > >> } > >> if ((r instanceof A) && 1 === r.DATA[0]) {out('.\n');} else {out(f+' > >> failed '+r+'.\n');} > >> } > >> window.v123= A(3).indices().plus(1); > >> window.m1to9= A([3,3]).reshape(A(9).indices()); > >> maintain(function(){return v123.times(2).match(A([2,4,6]))}); > >> // maintain(function(){return v123.take(2).match(A([1,2]))}); > >> maintain(function(){return > >> > m1to9.dot('plus','times')(m1to9).match(A([3,3],[15,18,21,42,54,66,69,90,111]))}); > >> maintain(function(){return > >> > m1to9.dot('plus','times')(A([3,2],[1,2,1])).match(A([3,2],[5,3,17,15,29,27]))}); > >> maintain(function(){return > v123.dot('plus','times')(v123).match(A(14))}); > >> maintain(function(){return v123.match(A([1,2,3]))}); > >> maintain(function(){return v123.reduce('plus').match(A(6))}); > >> </script> > >> </body></html> > >> > >> > >> On Thu, Jan 23, 2014 at 12:50 PM, Joe Bogner <[email protected]> > wrote: > >>> Raul, your library sounds interesting. Please share more if you can > later. > >>> > >>> Coffeescript is a fun language. The lambda syntax and lack of braces > >>> make it feel closer to the problem domain than native javascript. It > >>> also makes it harder to shoot yourself in the foot. The debugging and > >>> compilation has greatly improved over the years too. The compiler > >>> throws useful errors with line numbers etc. > >>> > >>> I agree that toys are useful for learning. It's common in the land of > >>> lisp to write a toy interpreter to better understand the language. I > >>> did that too and found putting this one together a nice break > >>> > >>> On Thu, Jan 23, 2014 at 12:12 PM, Raul Miller <[email protected]> > wrote: > >>>> I've been building an vsapl-like javascript library. I want that so > >>>> that I can code webgl without having to round-trip to jhs for minor > >>>> array manipulation. It's pretty simple since I only support one > >>>> numeric type (javascript numbers) in the arrays. So basically it's a > >>>> functional object library with a shape/data pair representing an array > >>>> - so for webgl arrays I basically can just extract the data and use it > >>>> "as-is". (I say "functional object library" because I use a > >>>> javascript object to represent each array, and monadic functions are > >>>> niladic methods ("this" is the right argument) which return a new > >>>> array while dyadic functions are single argument methods which also > >>>> return a new array ("this" is the left argument). Or at least, that's > >>>> how I currently have it wired up.) > >>>> > >>>> I'm not using git for my versioning, yet, because it's so trivial I > >>>> work better at this stage with a file for each version. I should > >>>> probably just stop working on it, and get back to coding webgl, but > >>>> coffeescript looks fun and I would like to compare code size and > >>>> simplicity between a native javascript implementation and a > >>>> coffeescript implementatin). > >>>> > >>>> I am using the vsapl semantics because they seem simpler to implement > >>>> for the subset of functionality I need (numeric operations on small > >>>> arrays, when using javascript) than the full J semantics. Also, > >>>> browsers have intentionally crippled functionality so any significant > >>>> use of the library would want jhs for heavy lifting. > >>>> > >>>> Anyways, toys are good for learning, and I've been struggling with > >>>> concepts of what I should be doing that's worthwhile for other people, > >>>> and if nothing else, this is a sometimes relaxing effort. > >>>> > >>>> Thanks, > >>>> > >>>> -- > >>>> Raul > >>>> > >>>> > >>>> On Thu, Jan 23, 2014 at 11:56 AM, Joe Bogner <[email protected]> > wrote: > >>>>> Thanks for the feedback. I just added in the insert adverb and pushed > >>>>> the code. It makes it feel more like APL now since I can do the > >>>>> prototypical +/1,2,3,4. > >>>>> > >>>>> Implementing forks might be up next (fun). Then I can do the J "hello > >>>>> world" of (+/%#) 5,10,15 > >>>>> > >>>>> On Thu, Jan 23, 2014 at 11:41 AM, Raul Miller <[email protected]> > wrote: > >>>>>> I like this, and I think it is time I learn coffeescript. This > relates > >>>>>> to some other efforts of mine. > >>>>>> > >>>>>> Thank you, > >>>>>> > >>>>>> -- > >>>>>> Raul > >>>>>> > >>>>>> > >>>>>> On Thu, Jan 23, 2014 at 11:20 AM, John Baker <[email protected]> > wrote: > >>>>>>> Interesting. I don't know cofffescript but it's not hard to figure > out > >>>>>>> what's going on here. > >>>>>>> > >>>>>>> > >>>>>>> On Wed, Jan 22, 2014 at 9:22 PM, Joe Bogner <[email protected]> > wrote: > >>>>>>> > >>>>>>>> I ported Arthur Whitney's one page APL interpreter fragment[1] to > >>>>>>>> coffeescript (which enables it to run in javascript) as learning > >>>>>>>> exercise. > >>>>>>>> > >>>>>>>> http://csilo.com/dev/apljs.html > >>>>>>>> > >>>>>>>> code is here: > https://github.com/joebo/apl-js/blob/master/apl.coffee > >>>>>>>> > >>>>>>>> This could be extended to create in-browser games/learning > exercises. > >>>>>>>> Of course, it would also make sense to change the symbols to J. I > kept > >>>>>>>> the original ones for historical reasons for now. > >>>>>>>> > >>>>>>>> [1] - http://www.jsoftware.com/jwiki/Essays/Incunabulum > >>>>>>>> [2] - http://www.jsoftware.com/papers/AIOJ/AIOJ.htm > >>>>>>>> > ---------------------------------------------------------------------- > >>>>>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> -- > >>>>>>> John D. Baker > >>>>>>> [email protected] > >>>>>>> > ---------------------------------------------------------------------- > >>>>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>>>>> > ---------------------------------------------------------------------- > >>>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>>>> > ---------------------------------------------------------------------- > >>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>>> ---------------------------------------------------------------------- > >>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>> ---------------------------------------------------------------------- > >>> For information about J forums see http://www.jsoftware.com/forums.htm > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- Devon McCormick, CFA ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
