tag:blogger.com,1999:blog-11295132.post5354353393632437147..comments2024-02-24T01:46:31.188-08:00Comments on A Neighborhood of Infinity: Operads and their Monadssigfpehttp://www.blogger.com/profile/08096190433222340957noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-11295132.post-31614349057624771682008-11-02T18:44:00.000-08:002008-11-02T18:44:00.000-08:00Dan -- what is the relationship between operads an...Dan -- what is the relationship between operads and the usual categorical story of universal algebra? Do operads take this idea up one level of categorification?leithaushttps://www.blogger.com/profile/01069099703796397027noreply@blogger.comtag:blogger.com,1999:blog-11295132.post-72430973237616795922008-10-28T14:16:00.000-07:002008-10-28T14:16:00.000-07:00@sigfpeI assume by "no duplication" you&...@sigfpe<BR/>I assume by "no duplication" you're referring to the fact that there's no way to "glue" two pipes of an operad together so that they take the same input.<BR/><BR/>I agree that would normally be inconvenient for thinking about a parse tree, but the metaphor I was pushing is that operads of degree n>0 are like n-arity functions & the degree 0 are like your terminals in your genetic programming environment. <BR/><BR/>Again, it's just a metaphor and nothing concrete at the moment.Creighton Hogghttps://www.blogger.com/profile/09820771070038676909noreply@blogger.comtag:blogger.com,1999:blog-11295132.post-15303308755647292822008-10-28T14:08:00.000-07:002008-10-28T14:08:00.000-07:00Corey,I think I know exactly what you're talking a...Corey,<BR/><BR/>I think I know exactly what you're talking about because I've gone through similar thought processes while thinking about audio synthesis in Haskell myself.<BR/><BR/>I'm not sure operads are quite the right structure but the separation of shape and data is key. I was thinking of targetting microcontrollers for audio and for that you don't want the overhead of maintaining a linked network of generator nodes. You just want raw data, and code that knows where to find what it needs in that data.sigfpehttps://www.blogger.com/profile/08096190433222340957noreply@blogger.comtag:blogger.com,1999:blog-11295132.post-65098167225988154672008-10-28T13:36:00.000-07:002008-10-28T13:36:00.000-07:00I wish I had learned this earlier...I have been wo...I wish I had learned this earlier...<BR/><BR/>I have been working on a modular synth framework in Haskell for a while now. The possible practical application you describe is close to what had to be used to achieve good performance.<BR/><BR/>On the high level audio sample generation is partitioned into three phases: 1) Definition of the audio synthesis pipeline. 2) Initialization of the pipeline to start generating at a specific point in time. 3) Iteration to generate subsequent samples. <BR/><BR/>One specific performance issue involved the need to store state at each node in the tree that defined the synthesis pipeline. This state needed to be mutable to achieve the performance requirements. At first the pipeline's tree contained mutable references at each node. This provided good performance but not quite enough and had other undesirable effects. The technique used to achieve the performance requirement is largely identical to what you describe: The shape of the tree is precomputed in phase 1. A mutable array containing the state of the generators is initialized in phase 2. A tight loop is used to generate subsequent samples in phase 3 referencing the mutable array for state. <BR/><BR/>Course I arrived at this over several iterations ignorant of Operads throughout. Had I learned this earlier I'm pretty sure it would have saved me a lot of effort. Great post, as always! :-)Corey O'Connorhttps://www.blogger.com/profile/05514322369153813168noreply@blogger.comtag:blogger.com,1999:blog-11295132.post-90123779592501760382008-10-28T10:04:00.000-07:002008-10-28T10:04:00.000-07:00Alexey,Like many mathematical constructions, it'd ...Alexey,<BR/><BR/>Like many mathematical constructions, it'd be nice to have dependent types here. On the other hand, I wonder if it might get tricky to define types for things like "trees with precisely 5 leaves".sigfpehttps://www.blogger.com/profile/08096190433222340957noreply@blogger.comtag:blogger.com,1999:blog-11295132.post-56031378661119111712008-10-28T08:20:00.000-07:002008-10-28T08:20:00.000-07:00This looks like it would be better written with de...This looks like it would be better written with dependent types, so that degree could be a part of the type.Alexey Romanovhttps://www.blogger.com/profile/04414745317669007614noreply@blogger.comtag:blogger.com,1999:blog-11295132.post-68677520864773186242008-10-27T10:31:00.000-07:002008-10-27T10:31:00.000-07:00Jim,My markup program gobbled the braces so I put ...Jim,<BR/><BR/>My markup program gobbled the braces so I put them back manually.<BR/><BR/>Creighton,<BR/><BR/>They look a lot like parse trees for a language in which you can't duplicate anything, which is a little awkward.sigfpehttps://www.blogger.com/profile/08096190433222340957noreply@blogger.comtag:blogger.com,1999:blog-11295132.post-26159847663794426242008-10-27T08:17:00.000-07:002008-10-27T08:17:00.000-07:00@jim That's because it needs to be O {...}.You...@jim That's because it needs to be O {...}.<BR/><BR/>Your Fn operad in particular got me thinking about a few things. Chaining a large group of Fn's together via the o function is, really, like gluing together a parse tree. This makes my brain tickle with the relationship between parse trees & genetic programming, wondering if there is a way to generalize what is an 'evolvable' structure to include both lists and parse trees as special cases.<BR/><BR/>I'll have to mull it over a bit and see if there's really any relationship there or not.<BR/><BR/>In any case, thanks for the intro to operads!Creighton Hogghttps://www.blogger.com/profile/09820771070038676909noreply@blogger.comtag:blogger.com,1999:blog-11295132.post-59292162128895202202008-10-27T04:03:00.000-07:002008-10-27T04:03:00.000-07:00ghc-6.8.2 doesn't likedata OperadWrapper m = O...ghc-6.8.2 doesn't like<BR/>data OperadWrapper m = O O::Shape m<BR/><BR/>>parse error on input ::Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-11295132.post-12177367727545740222008-10-26T18:45:00.000-07:002008-10-26T18:45:00.000-07:00FYI, the Barry Jay link is broken.FYI, the Barry Jay link is broken.Dionysushttps://www.blogger.com/profile/07812865188278101592noreply@blogger.com