←2018-08-09 2018-08-10 2018-08-11→ ↑2018 ↑all
00:01:30 -!- YuGiOhJCJ has joined.
00:01:59 -!- YuGiOhJCJ has quit (Remote host closed the connection).
00:04:05 -!- arseniiv has quit (Ping timeout: 240 seconds).
00:12:27 -!- S_Gautam has joined.
00:41:17 -!- SoniEx2 has quit (Read error: Connection reset by peer).
00:50:11 -!- Sigyn22 has joined.
00:51:58 -!- Sigyn22 has quit (Remote host closed the connection).
00:52:34 -!- SoniEx2 has joined.
01:05:06 -!- moei has quit (Ping timeout: 244 seconds).
01:06:40 -!- MDude has quit (Read error: Connection reset by peer).
01:08:28 -!- Gregor` has quit (Ping timeout: 265 seconds).
01:12:17 -!- MDude has joined.
01:19:39 -!- Gregor has joined.
01:46:23 -!- erkin has quit (Remote host closed the connection).
01:51:05 -!- boily has quit (Quit: MEANDERING CHICKEN).
01:59:36 -!- Zooklubba0 has joined.
02:00:52 -!- Zooklubba0 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
02:04:06 -!- meti24 has joined.
02:04:31 -!- meti24 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
02:05:37 -!- ululate has joined.
02:08:36 -!- tromp has joined.
02:11:54 -!- ululate has quit (Ping timeout: 268 seconds).
02:12:57 -!- tromp has quit (Ping timeout: 240 seconds).
02:20:17 -!- gildarts_ has joined.
02:20:20 -!- gildarts_ has changed nick to Guest62181.
02:26:13 -!- Guest62181 has quit (Ping timeout: 244 seconds).
02:26:18 <Sgeo_> I can't believe I dismissed Julia language just because I thought it was just for science work
02:33:00 <imode> the lambda calculus is an inefficient model for computing w.r.t physical implementations, change my view.
02:37:10 -!- bradcomp has joined.
02:46:59 <xkapastel> imode: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.2386&rep=rep1&type=pdf
02:48:15 <imode> brief summary? a skim shows this as improving beta reduction.
02:48:39 <xkapastel> it's a massively parallel lambda evaluator
02:48:59 <xkapastel> this technique can run on a gpu and make e.g. pure lambda calculus arithmetic feasible
02:49:09 <imode> great. that doesn't change the fact that lambda calculus is an inefficient model for computing w.r.t physical implementations.
02:49:14 <xkapastel> doesn't it?
02:49:26 <imode> not really, no. imagine you were to design a lambda calculus processor.
02:49:41 <xkapastel> it would be like a gpu
02:49:44 <imode> LC works over lambda terms, which are term trees.
02:49:44 <xkapastel> and it would be fast
02:49:48 <xkapastel> it's not a tree
02:50:01 <imode> how are LC terms not trees.
02:50:22 <xkapastel> because you make them graphs as in the paper i linked to, in order to do very fast parallel reductionm
02:50:47 <imode> that doesn't change the fact that term trees are LC's native representation.
02:50:56 <xkapastel> the difference is significant because things like e.g. variable capture, de bruijin indices, shifting all go away
02:50:58 <xkapastel> yes it does change that fact
02:51:03 <xkapastel> what does "native representation" mean?
02:51:28 <xkapastel> the native representation of `\x. x+1` is a list of characters that you can parse in to whatever
02:51:38 <xkapastel> just because you like parsing it in to a tree doesn't mean it is a tree
02:51:41 <imode> it means that you don't use a graph, you use term trees. nested LC terms.
02:51:52 <xkapastel> in fact, the trouble with manipulating lambda terms points to the fact that they are not trees
02:51:52 <imode> regardless, show me some graph structured memory.
02:52:22 <xkapastel> look at the problems that de bruijin indices were made to solve, and the things you have to do wit shifting and unshifting in order to avoid variable capture
02:52:30 <imode> when I say "physical implementation" I mean the entire processor needs to do one thing and one thing only: reduce lambda expressions.
02:52:34 <xkapastel> with a graph representation, a lambda binder connects directly to the usage sites of the variable
02:52:52 <xkapastel> imode: the big picture here is that lambda reduction looks very different from your current mental model
02:52:55 <imode> in order to do that, one needs some kind of tree or graph-structured memory for evaluation.
02:53:11 <xkapastel> no, you can do it on a cellular automata-like processor
02:53:17 <imode> how so?
02:53:20 <xkapastel> where rewrites are purely local
02:54:23 <imode> the thing that I find attractive about TMs is that their state is almost entirely linear, sans the state tables.
02:54:51 <imode> which can be represented as 2D tables. with LC I find that you need tree or graph structured memory, regardless of whether you're doing naive or optimized reductions.
02:55:12 <xkapastel> the paper i linked to discusses a formalism called interaction nets
02:55:29 <imode> right, which requires, first and foremost, graph structured memory to reduce arbitrary lambda expressions.
02:55:36 <xkapastel> it's a graph rewriting model of computation where rewrites are purely local, and so a large graph can be processed in parallel since portions of the graph are owned independently
02:56:03 <xkapastel> the graph is encoded as an array
02:56:12 <xkapastel> portions of the array are rewritten in parallel, like a pixel shader
02:56:19 <xkapastel> the memory is flat
02:56:37 <imode> so you've now just reduced it to a random access machine with a particular program.
02:56:43 <xkapastel> it's not random access
02:56:47 <xkapastel> like i said, rewrites are local
02:56:55 <xkapastel> imagine a big array divided in to say, 5 chunks
02:57:01 <xkapastel> it's not random access, causality stays inside each chunk
02:57:51 <imode> so your process is... convert a lambda expression into an interaction net, reduce said interaction net with this giant parallel local rewriting thing.
02:57:54 <xkapastel> information propagates across the graph in a wave like a game of life glider for example
02:58:29 <imode> seems like an awful long way to go just for LC.
02:58:52 <xkapastel> https://github.com/MaiaVictor/parallel_lambda_computer_tests has a small prototype of this scheme
02:59:06 <imode> what language?
02:59:07 <xkapastel> not mine, but he's also working on something similar
02:59:11 <xkapastel> this one is in javascript
02:59:24 <xkapastel> sorry, that one is cuda
02:59:27 <xkapastel> there's another in javascript
02:59:29 <imode> lol I was gonna say.
02:59:32 <imode> funky lookin' JS.
03:00:03 <imode> so, what exactly goes into the process of translating LC into interaction nets, per se.
03:00:33 <imode> because I guess my point is you're not really reducing LC expressions, you're reducing some compiled form of LC expressions.
03:00:49 <imode> whereas I can actually go out and build an LBA.
03:01:10 <imode> and build the state tables and so on and so forth. without any compilation steps. if I really had the mindfulness to.
03:01:39 <imode> at what point does building an optimizing evaluator turn the thing you're evaluating into an entirely different model of computation.
03:02:23 -!- bradcomp has quit (Ping timeout: 244 seconds).
03:02:49 <xkapastel> i guess you can say interaction nets are the real model of computation here
03:03:08 <imode> kind of my point.
03:03:16 <xkapastel> but if lambda calculus has a thin translation to it, like C does to x86, does it matter?
03:03:44 <imode> well yeah, it does, because this is a model of computation we're talking about. x86 is pretty far away from a TM.
03:04:11 <xkapastel> C isn't a TM, it's another machine model
03:04:29 <imode> if I had built something like Laconic and called it a model of computation, but really it needs to be compiled down to a TM in order to actually carry out the computation, the model of computation isn't Laconic, it's the TM.
03:04:43 <xkapastel> the point is you can give a straightforward cost semantics for lambda calculus and realize it on a physical machine
03:04:44 <imode> no, I was making a mismatch between x86 and a TM.
03:05:17 <xkapastel> well, models of computation are often abstract
03:05:19 <imode> right, but that's not.. my point. you're not really evaluating the lambda calculus. you're evaluating instances of interaction nets.
03:05:39 <imode> so the claim "LC is an efficient model of computation w.r.t physical implementation" is pretty bogus.
03:05:45 <xkapastel> if we're going to use the word model here, it doesn't matter what it really runs on, what matters is whether you're able to give a cost semantics for expressions
03:06:16 <imode> I'd argue the opposite, as actually implementing models does help.
03:06:45 <imode> it's kind of why I hate the name "lisp machine", too.
03:06:59 <imode> like, it's not really a lisp machine. it's a random access machine with a lisp interface.
03:07:17 <imode> have you found the JS snippet yet? really curious because that CUDA looked interesting.
03:07:39 <xkapastel> https://github.com/MaiaVictor/LPU
03:08:16 -!- bradcomp has joined.
03:08:42 <imode> huh. okay.
03:09:09 <imode> wish it was a little more well commented but I doubt this is for documentation purposes.
03:09:26 <xkapastel> you can check the github issues thread linked for a back and forth discussing it
03:09:32 <xkapastel> "Explanation" in the README
03:09:56 <imode> oh boy it links to chorasimilarity.
03:10:08 <xkapastel> once you get the idea you don't really need the js, and anyway he does it naively so you'd need to change it to realize the parallelism
03:10:54 <xkapastel> one thing to keep in mind is that this is using the good version of cellular automata, not the kind that's popular
03:11:22 <xkapastel> the usual cellular automata are too hard to build anything with because the rules are like [A B C] -> B
03:11:37 <xkapastel> the kind used here is a block cellular automata where rules are like [A B C] -> [A B C]
03:11:47 <imode> so what're the rules for reducing interaction nets, and how do LC expressions compile to them?
03:12:05 <imode> still looking through this, but picking the concept apart from a github issue is...
03:12:11 <imode> not really all that fun.
03:12:42 <xkapastel> https://pdfs.semanticscholar.org/e24d/ad59709fef715e512a9caebd781d0b029075.pdf the first few sections of this are good to explain it
03:13:01 <xkapastel> i can do it in the chat but it's a bit involved and i can't draw diagrams
03:13:14 <imode> lol, I figured.
03:13:31 <imode> sigh. why not just a concise explanation.
03:13:35 <xkapastel> imagine a node in a graph as a big ball with little pegs on it
03:13:40 <imode> right. ports.
03:13:42 <xkapastel> you know that "bop it" game?
03:13:47 <xkapastel> okay, so there's one special port
03:13:56 <xkapastel> when two nodes touch on this port they interact
03:14:13 <xkapastel> this keeps all interaction local, meaning you can divide up memory among independent processors
03:14:19 <imode> okay, define interact.
03:14:25 <xkapastel> you know that node can't be interacting with anyone else at the same time
03:14:31 <xkapastel> so, two nodes are touching on their "principal" port
03:14:36 <xkapastel> they have other ports, say two others
03:14:42 <xkapastel> those ports are also connected to nodes
03:14:46 <imode> do these ports represent bound variables.
03:14:49 <imode> and unbound ones.
03:14:59 <xkapastel> during an "interaction", you can take ownership of all of those ports and rewire them as you please
03:15:21 <xkapastel> and you can make new nodes with new connections, as long as the total "interface" of connections remains the same
03:15:30 <xkapastel> no, they don't
03:15:52 <imode> okay.. can you show me some computations? maybe something as simple as adding two numbers?
03:16:07 <xkapastel> one way to do it is to have a node representing a lambda, with a principal port for interaction, another port that connects to each usage of the variable, and another port connecting to the lambda's body
03:16:25 <xkapastel> http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.112.2822&rep=rep1&type=pdf
03:16:27 <xkapastel> here, this one is easy
03:16:39 <xkapastel> that does cons-lists, basic arithmetic etc
03:17:12 <imode> I see. so are nodes typed?
03:17:21 <imode> ah nvm.
03:17:29 <xkapastel> it's like lambda calculus, you can develop typed and untyped formalisms
03:17:31 <imode> they "kind of are" by their shape, it looks.
03:17:49 -!- u0_a101 has joined.
03:17:51 <imode> okay, I'll take a look at this and get back to you.
03:18:12 <imode> seems like an interesting formalism, I'd like to pick your brain about how you'd do it in a flat memory space.
03:20:34 <imode> afk for like 10.
03:27:09 -!- oerjan has joined.
03:39:45 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
03:41:44 -!- x49F has joined.
03:42:37 -!- x49F has quit (Remote host closed the connection).
03:44:59 <oerjan> <wob_jonas> oerjan: so you're saying you checked a paper dictionary, and wiktionary is definitely wrong about a common italian word? <-- technically i knew parlerò was wrong from wikipedia's phonology article (ò is always open), but the scanned paper one in google books had other examples like parlerèbbe (where the accent is _not_ usually written, and means it's open so wiktionary gets that too wrong)
03:46:09 <oerjan> although parlerebbe is a bit fishy, there are more google hits for parlerébbe...
03:46:34 <oerjan> (only a handful of each though.)
03:46:53 <oerjan> (although it might include OCR errors, seeing as there are google books hits.)
03:48:06 <oerjan> this book btw https://books.google.no/books?id=Oox0b3OPJIwC&pg=PA177&lpg=PA177&dq=parler%C3%A9mo&source=bl&ots=RQmfWUInLy&sig=zTvv_OpILl6_vCc5z3DqEEAYo6w&hl=no&sa=X&ved=2ahUKEwjs5Y7Ex-HcAhXR0aYKHcLvA8IQ6AEwBnoECAMQAQ#v=onepage&q=parler%C3%A9mo&f=true
03:48:52 <oerjan> (i searched for parlerémo first, which wiktionary actually gets right)
03:50:09 <oerjan> <wob_jonas> oerjan: doesn't Italian have some default convention for omitting the stress accent even in dictionaries if it matches a simple default rule? <-- plausible, it would probably be when it's the second last syllable and not e or o.
03:50:49 <oerjan> however, i think that would be a bad idea for wiktionary because then you wouldn't know if the editor has forgotten to add the info or not
03:56:28 <imode> back.
03:57:04 -!- tromp has joined.
04:00:25 -!- fractal12 has joined.
04:01:05 -!- tromp has quit (Ping timeout: 240 seconds).
04:01:12 -!- fractal12 has quit (Killed (Unit193 (Spam is not permitted on freenode.))).
04:03:24 <imode> xkapastel: okay. starting to see the applications of this. now how exactly would I implement these rewriting rules. would I just have an array of nodes with a set of ports linked to other nodes?
04:05:22 <xkapastel> a node has a tag and let's say 3 ports max
04:05:39 <xkapastel> for each port, you need to know what node it's connected to, and also what port on that node
04:06:02 <xkapastel> if two nodes are connected on their principal ports (let's say port 0), they interact
04:06:16 <xkapastel> now, the trick about doing this in parallel
04:06:31 <xkapastel> is to make nodes only interact with adjacent nodes in this array
04:06:45 <imode> okay.. so that involves some shuffling, I assume.
04:06:50 <xkapastel> if you're familiar with like, a convolution, or an IR filter, you can scan down the array in blocks in parallel
04:07:05 <xkapastel> so you'd tile up the whole array evenly in to independent chunks
04:07:09 <xkapastel> let's say 4 nodes per chunk
04:07:23 <xkapastel> if two nodes are adjacent and connected by principal ports, you do the rewrite rule given by their tags
04:07:34 <xkapastel> like you saw wit e.g. append and cons
04:07:48 <imode> right. but, okay, let's step back and not assume I want parallel evaluation.
04:07:50 <xkapastel> if they're not connected, then they need to move around and find the thing they are connected to
04:07:55 <xkapastel> okay
04:08:16 <xkapastel> well, you can just have a big array of nodes
04:08:17 <imode> so I have an array of nodes. each node has a finite number of ports at max.
04:08:32 <xkapastel> struct Node { tag int, fstId int, fstPort int, sndId int, sndPort int, auxId int, auxPort int }
04:08:37 <xkapastel> for example
04:08:41 <imode> let's say I have a rule that if two X tagged nodes are connecd to eachother, they get erased.
04:08:57 <xkapastel> so what happens is, you have an array of pairs of node IDs
04:09:09 <xkapastel> which represent the nodes you have found that are connected by their principal ports
04:09:14 <imode> okay.
04:09:18 <xkapastel> you have an API that connects two nodes
04:09:26 <xkapastel> like connect(fstId, fstPort, sndId, sndPort)
04:09:33 <xkapastel> if fstPort == 0 and sndPort == 0, then they go in that array
04:09:38 <xkapastel> since they're gonna interact
04:09:42 <imode> gotcha.
04:09:59 <xkapastel> at each "tick", you have however many pairs in that array
04:10:13 <xkapastel> the size of that array is the "available parallelism" which is an interesting metric that lets you measure cost
04:10:26 <xkapastel> anyway you go through the array and do the rule for each pair
04:10:28 <imode> right, "here's how many things are going to interact at this step."
04:10:34 <xkapastel> and the rule will involve more calls to `connect()`
04:10:41 <xkapastel> which will probably put more things in the array
04:10:47 <xkapastel> and you see how it keeps going
04:11:34 <imode> so, let's say I have the cons/append example.
04:11:46 <imode> all I'd have to say is "take these two nodes, they're connected by their principal ports."
04:12:22 <xkapastel> append's first port is the principal, second is i guess v, then w
04:12:33 <xkapastel> cons have a principal, and x and u
04:12:39 <imode> "rewrite it such that append's port 1 (the top port) is now linked to cons's port 2."
04:12:47 <xkapastel> so when they connect by principal, you own all of those places in the array
04:12:47 <imode> so on and so on for all ports in that rule.
04:12:53 <xkapastel> so you can rewrite them
04:13:05 <xkapastel> "you", i mean the independent process responsible for rewriting that pair
04:13:26 <imode> I'm trying to focus on how you'd just step by step rewrite this. what your lhs and rhs of a given rule looks like in memory.
04:13:58 <xkapastel> cons' u port is a member of that node struct
04:14:04 <xkapastel> the id it's connect to is append's id
04:14:14 <xkapastel> the port it's connected to is the number of append's w port
04:14:22 <imode> so, adding and removing nodes.
04:14:44 <imode> one sec.
04:14:44 <xkapastel> the really simple way is to just have a free list of IDs
04:15:35 <xkapastel> and you'd have some kind of node like "drop" or "erase" in that pdf, where part of the rule is returning the id of the node you interact with to the free list
04:17:46 -!- blacksyke4 has joined.
04:19:31 -!- blacksyke4 has quit (Remote host closed the connection).
04:21:38 -!- __idiot__ has joined.
04:21:48 -!- __idiot__ has quit (Killed (Unit193 (Spam is not permitted on freenode.))).
04:22:28 <imode> xkapastel: back. so, adding and removing nodes. if I said you could only specify a rule using structure initialization syntax in C, what would you give me for cons/append's rule.
04:23:37 <xkapastel> well the rules are mutating integers in an array
04:24:07 <xkapastel> it's just a bunch of stuff like `graph.node[fst].ports[2][1] = graph.node[snd].ports[0][2]` or whatever
04:24:11 <imode> right. but you need to store your lhs and rhs in some kind of format.
04:24:23 <imode> so what would that look like.
04:24:26 <xkapastel> imagine 5 assignments like that one stacked on top of each other
04:24:29 <xkapastel> in a function
04:24:42 <esowiki> [[Hash function]] N https://esolangs.org/w/index.php?oldid=57297 * A * (+237) I can't explain that...
04:24:46 <xkapastel> you could have a 2d matrix where row and columns are node tags
04:24:56 <xkapastel> and the element inside the matrix is a function pointer implementing the rewrite rule
04:25:03 <esowiki> [[Hash function]] https://esolangs.org/w/index.php?diff=57298&oldid=57297 * A * (+132)
04:25:06 <xkapastel> and the body is a bunch of assignments like the one i just wrote
04:25:17 <esowiki> [[Hash function]] https://esolangs.org/w/index.php?diff=57299&oldid=57298 * A * (-132)
04:25:47 <imode> okay, new plan. how would your rewrite rules look textually.
04:26:00 <xkapastel> was that description not clear? :S
04:26:38 <xkapastel> the matrix lets you map a pair of ints to a function pointer, the body is just assignments that shuffle around the node ports like the one i wrote
04:26:39 <imode> no, it really wasn't. your rules are your code that manipulates this graph structure, yeah? so you need a rule format to load into your interpreter, so you can use those rules to rewrite the interaction net.
04:26:50 <xkapastel> no you don't need to load any rules
04:26:54 <imode> ????
04:26:57 -!- gareth__25 has joined.
04:27:03 <xkapastel> the interpreter is the rules
04:27:08 <xkapastel> why would you "load" anything in to it?
04:27:22 <imode> ...how else would I write what it means to append something to a list.
04:27:23 <xkapastel> does python "load" the python bytecode format, as if it could run anything else?
04:27:41 -!- gareth__25 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
04:27:43 <imode> what is the in-memory representation of that append rule? can you give me a straight answer?
04:27:48 <xkapastel> i just wrote it
04:27:52 <imode> you wrote some C code.
04:27:53 <xkapastel> the assignment above
04:28:05 <xkapastel> a bunch of those, shuffling the correct ports from the diagram
04:28:54 <imode> so the premise that I'm getting from that document I linked is that I can write rules, lhs and rhs, to rewrite portions of an interaction net. you follow?
04:29:01 <imode> s/I linked/you linked
04:29:12 <xkapastel> hold on, i've written it in go
04:29:15 <xkapastel> a while back
04:29:17 <xkapastel> can you read that?
04:29:21 <imode> no, just follow me here.
04:29:35 <imode> I can write rules like that, yeah? they aren't hard-coded.
04:29:44 <xkapastel> why wouldn't you hard code them
04:29:52 <xkapastel> does python load rules for other languages very often
04:29:56 <imode> this isn't python.
04:30:02 <xkapastel> okay, whatever language it is
04:30:07 <xkapastel> think about what you're trying to do
04:30:15 <xkapastel> you want to write some kind of meta-interpreter for ANY set of rules
04:30:16 <imode> lmao, so you just hard code the rules you want.
04:30:17 <xkapastel> but why??
04:30:26 <imode> uh, because interaction nets are supposed to be general.
04:30:27 <xkapastel> you make the rules that correspond to your language
04:30:34 <xkapastel> it's like writing a bytecode interpreter for one lang
04:30:41 <imode> lmao.
04:30:45 <xkapastel> would you ever want to make a "general" bytecode vm framework
04:30:49 <imode> okay, have fun with your interaction nets.
04:30:51 <xkapastel> i mean you can, but it's harder
04:31:04 <imode> see it's not hard to write a rule-based interpreter.
04:31:15 <imode> you load some rules, those rules mutate state.
04:31:22 <xkapastel> okay, so what's the problem
04:31:37 <imode> you hard-code your rules. I'm asking you to show me what it might look like if you didn't.
04:31:58 <xkapastel> you could use a dynamic language and just load more code whenever
04:32:03 <imode> yeah nvm lmao.
04:32:14 <xkapastel> you're doing it the hard way idgi
04:32:31 <xkapastel> that's going to lead to a lot of nasty code for parsing some sad little rule format
04:32:32 <imode> how is that the hard way when the document you linked pretty much goes over writing rules for rewriting interaction nets.
04:32:45 <xkapastel> because you write the rules, in whatever implementation lang you've chosen
04:33:09 <xkapastel> okay, imagine the paper wasn't about interaction nets
04:33:12 <xkapastel> it could be about term rewriting
04:33:20 <xkapastel> ONE of the examples would be this weird thing called "the lambda calculus"
04:33:25 <imode> do I hard-code state tables for TMs when writing a TM interpreter? no, because that'd be fucking dumb.
04:33:27 <xkapastel> the lambda calculus is one particular term rewriting system
04:33:34 <imode> I load state tables from a file so I can simulate any arbitrary TM.
04:33:46 <imode> if nobody's done that for interaction nets then I'd ask why.
04:33:50 <xkapastel> you can also just write other state tables in your lang and use things like high order functions to swap them out
04:33:54 <xkapastel> people have done it
04:34:15 <xkapastel> the thing i was describing was not going in that direction at all, is where the confusion came from i guess
04:34:21 -!- bradcomp has quit (Ping timeout: 244 seconds).
04:34:35 <imode> right, I see where you were headed, but if I was just going to hard-code rules I might as well go write a lisp interpreter.
04:34:58 <imode> I'd like to see what the more general form would look like, where you could specify "here's what appending looks like."
04:35:09 <imode> instead of "here's this nice little language that rides on top of interaction nets but really doesn't need to."
04:35:23 <xkapastel> https://bitbucket.org/inarch/ia2d
04:35:59 <xkapastel> a notation for writing general rewrite rules
04:36:04 <xkapastel> > We write the rule for an active pair between nodes alpha and beta as alpha(x_1, ..., x_n) >< beta(y_1, ..., y_m) => [N],
04:36:06 <lambdabot> <hint>:1:84: error: parse error on input ‘,’
04:36:22 <imode> I see.
04:36:23 <xkapastel> you have a file with a bunch of expressions like that and then load it
04:36:45 <xkapastel> they do natural numbers and lists later in that readme
04:37:06 <imode> see that's what I was kind of looking for. you'd need variable matching and binding to actually do that.
04:37:23 <xkapastel> it all compiles down to what i was talking about earlier though
04:37:34 <xkapastel> you would have a universal interaction net that runs this stuff
04:37:40 <imode> right, but it still uses things like variables to link up arbitrary ports.
04:37:46 <xkapastel> no it doesn't
04:38:11 <xkapastel> you can have an interaction net as a compilation target for those rule expressions
04:38:13 <xkapastel> which is what they do
04:38:34 <oerjan> <xkapastel> anyone here familiar with the Jelly golfing language? <-- i've not learned it, but there's a jelly channel on stackexchange chat
04:38:44 <xkapastel> oh stackexchange has a chat?
04:38:58 <imode> how exactly do you construct append's rule, then. just explicitly refer to certain ports?
04:39:00 <imode> and yeah it does.
04:39:04 <xkapastel> someone mentioned the "jelly chat" on their github issues but i didn't know where it was
04:39:27 <xkapastel> imode: let's say we have a minimal interaction net called the "inteaction combinators"
04:39:40 <xkapastel> we're gonna...gasp...hardcode those rules
04:39:44 <imode> :V
04:39:48 <xkapastel> then read those expressions and compile them to it
04:40:04 <imode> eh.
04:40:39 <xkapastel> as a fan of turing machines, you know you can have one that simulates any other
04:40:47 <imode> yup.
04:40:56 <imode> (not a fan of TMs per se.. maybe string rewriting systems.)
04:41:18 <imode> mainly due to movement of large regions of symbols.
04:46:29 <oerjan> https://chat.stackexchange.com/rooms/info/32533/jelly although you need some SE rep to get on there
04:47:16 <oerjan> and it's not extremely active
04:48:03 -!- JStoker20 has joined.
04:48:39 <u0_a101> snark exchange
04:52:32 <xkapastel> yeah i can't even chat
04:52:36 <xkapastel> f
04:53:21 -!- JStoker20 has quit (Ping timeout: 240 seconds).
04:58:30 <u0_a101> "just answer some questions and you'll have enough rep in no time!"
05:25:00 <oerjan> it may have to be PPCG rep specifically, i'm not sure
05:28:29 <u0_a101> opps, i meant "just answer some questions on our low traffic site, where nobody votes, and you'll have enough rep eventually"
05:28:47 <u0_a101> tbf, PCG is not really low traffic
05:28:49 <u0_a101> but still
05:44:52 -!- tromp has joined.
05:49:21 -!- tromp has quit (Ping timeout: 240 seconds).
06:03:43 -!- sjohnson10 has joined.
06:07:19 -!- sjohnson10 has quit (Remote host closed the connection).
06:18:58 -!- exio425 has joined.
06:19:34 -!- j-bot has joined.
06:19:38 -!- exio425 has quit (Killed (Unit193 (Spam is not permitted on freenode.))).
06:27:11 -!- grit2 has joined.
06:27:27 -!- grit2 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
06:31:00 -!- sprocklem has quit (Quit: brb).
06:31:25 -!- sprocklem has joined.
06:50:44 <oerjan> from the faq i suspect it's not actually just PPCG rep, it's either total SE rep or the highest rep on any SE site.
06:53:52 <oerjan> (also it's just 20)
06:54:29 <oerjan> basically you need two upvotes.
07:01:42 -!- tromp has joined.
07:02:38 -!- imode has quit (Ping timeout: 244 seconds).
07:11:27 -!- qassim0 has joined.
07:11:35 -!- qassim0 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
07:11:56 -!- XorSwap has quit (Ping timeout: 265 seconds).
07:28:20 -!- xkapastel has quit (Quit: Connection closed for inactivity).
07:51:35 <esowiki> [[Surtic]] M https://esolangs.org/w/index.php?diff=57300&oldid=57257 * Galaxtone * (+0) Fixed error in syntax for Truth Machine
07:54:33 -!- WhitePhosphorus6 has joined.
07:54:58 -!- WhitePhosphorus6 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
07:55:00 <esowiki> [[Surtic]] M https://esolangs.org/w/index.php?diff=57301&oldid=57300 * Galaxtone * (-1) Actually fixed syntax, Confused it for a while loop.
07:56:03 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=57302&oldid=57296 * Galaxtone * (-2) /* Surtic */ Updated version with proper syntax.
08:01:26 <esowiki> [[Surtic]] M https://esolangs.org/w/index.php?diff=57303&oldid=57301 * Galaxtone * (+0) /* Truth-machine */ Ok seriously I triple-checked, This is perfect.
08:02:20 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=57304&oldid=57302 * Galaxtone * (+0) /* Surtic */ Triple-Checked, Definitely no syntax errors in this.
08:52:16 <esowiki> [[Surtic]] https://esolangs.org/w/index.php?diff=57305&oldid=57303 * Galaxtone * (+18) Added a limit for sake of limitations.
08:57:18 <esowiki> [[Surtic]] https://esolangs.org/w/index.php?diff=57306&oldid=57305 * Galaxtone * (-18) /* C */ Nevermind on the limitation
09:00:40 -!- interd0me26 has joined.
09:00:50 -!- interd0me26 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
09:14:16 <shachaf> Sgeo_: will we be getting an olist today twh
09:21:49 -!- SopaXorzTaker has joined.
09:23:23 -!- kline7 has joined.
09:24:01 -!- kline7 has quit (Killed (Unit193 (Spam is not permitted on freenode.))).
09:24:42 -!- shreyansh_k10 has joined.
09:24:49 -!- shreyansh_k10 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
09:25:40 -!- Phantom_Hoover has joined.
09:25:41 -!- Phantom_Hoover has quit (Changing host).
09:25:41 -!- Phantom_Hoover has joined.
09:25:53 -!- Phantom_Hoover has quit (Remote host closed the connection).
09:35:31 -!- AnotherTest has joined.
09:36:48 <int-e> The mercurial ui is so terrible :P (seriously though, why does hg pull -u not do an update when nothing was pulled?)
09:38:14 <int-e> (This comes up fairly frequently in my usage... I hg pull -u and it refuses to update because some local file is modified ... so I fix that and then I rerun the failing command.)
09:39:32 -!- mundus2018 has joined.
09:39:50 -!- mundus2018 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
09:55:54 -!- oerjan has quit (Quit: Later).
10:16:24 -!- cods22 has joined.
10:17:04 -!- cods22 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
10:28:57 -!- ktechmidas has joined.
10:29:02 -!- ktechmidas has quit (Remote host closed the connection).
10:43:03 -!- krushia has joined.
10:49:26 -!- krushia has quit (Ping timeout: 276 seconds).
11:01:09 -!- dfgg15 has joined.
11:01:19 -!- dfgg15 has quit (Killed (Unit193 (Spam is not permitted on freenode.))).
11:07:18 -!- christophegx has joined.
11:07:26 -!- christophegx has quit (K-Lined).
11:28:25 -!- zz_ka6sox has joined.
11:28:51 -!- zz_ka6sox has quit (K-Lined).
11:29:22 -!- l2y has joined.
11:35:50 -!- l2y has quit (Ping timeout: 256 seconds).
12:04:04 -!- Selfsigned7 has joined.
12:09:33 -!- Selfsigned7 has quit (Ping timeout: 260 seconds).
12:11:47 -!- phryxam has joined.
12:11:50 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
12:12:49 -!- AnotherTest has quit (Ping timeout: 248 seconds).
12:19:44 -!- arseniiv has joined.
12:27:06 -!- trisk14 has joined.
12:27:17 -!- trisk14 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
12:28:21 -!- phryxam has quit (Ping timeout: 240 seconds).
12:33:41 -!- xkapastel has joined.
13:10:00 -!- Asoka19 has joined.
13:10:16 -!- Asoka19 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
13:16:05 <Sgeo_> `olist 1134
13:16:06 <HackEso> olist 1134: shachaf oerjan Sgeo FireFly boily nortti b_jonas
13:16:41 <Sgeo_> shachaf, yes
13:26:52 -!- sleepnap has joined.
13:46:50 -!- trqx14 has joined.
13:47:08 -!- trqx14 has quit (Remote host closed the connection).
14:16:06 -!- tromp has quit (Remote host closed the connection).
14:23:20 -!- tromp has joined.
14:27:45 -!- moei has joined.
14:28:15 <esowiki> [[Brainfuck]] https://esolangs.org/w/index.php?diff=57307&oldid=57021 * Wright * (-237) Deleted irrelevant example (also the sentence structure in general was just bugging me)
14:33:05 -!- ecks4 has joined.
14:34:59 -!- ecks4 has quit (Read error: Connection reset by peer).
14:53:26 -!- heroux_ has quit (Read error: Connection reset by peer).
14:53:44 -!- heroux_ has joined.
15:20:10 -!- bradcomp has joined.
15:44:21 -!- AnotherTest has joined.
15:51:17 -!- ilbelkyr15 has joined.
15:51:27 -!- ilbelkyr15 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
15:53:52 <arseniiv> https://xkcd.com/2031/
15:55:39 <Taneb> :D
16:01:17 -!- rodarmor22 has joined.
16:01:17 -!- atslash has quit (Quit: This computer has gone to sleep).
16:01:52 -!- rodarmor22 has quit (Remote host closed the connection).
16:02:50 -!- n0nada17 has joined.
16:03:33 -!- n0nada17 has quit (K-Lined).
16:05:22 <bradcomp> heh
16:10:51 -!- Globalirc21 has joined.
16:10:51 -!- Globalirc21 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
16:17:00 -!- Reincarnate25 has joined.
16:17:11 -!- Reincarnate25 has quit (Killed (Unit193 (Spam is not permitted on freenode.))).
16:19:54 -!- erkin has joined.
16:21:25 -!- calcul0n1 has joined.
16:21:41 <arseniiv> a lot of lol stuff in the recent ones there
16:21:52 <arseniiv> https://xkcd.com/2016/
16:22:23 -!- calcul0n1 has quit (Remote host closed the connection).
16:24:16 -!- cyberzeus2 has joined.
16:24:59 -!- cyberzeus2 has quit (K-Lined).
16:46:29 -!- imode has joined.
16:46:55 -!- imode has quit (Client Quit).
16:47:09 -!- imode has joined.
16:53:13 -!- myth0d4 has joined.
16:53:46 -!- myth0d4 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
17:06:25 -!- norkle12 has joined.
17:07:35 -!- norkle12 has quit (Killed (Sigyn (Spam is off topic on freenode.))).
17:19:01 -!- tromp has quit (Remote host closed the connection).
17:40:40 -!- MEPB has joined.
17:40:48 -!- MEPB has quit (K-Lined).
17:55:39 -!- tromp has joined.
18:08:25 -!- tromp has quit (Remote host closed the connection).
18:17:44 <zzo38> Is there a such thing as tsumeshogi-FEN?
18:20:00 -!- ais523 has joined.
18:28:51 -!- tromp has joined.
18:36:53 -!- XorSwap has joined.
18:38:05 <rain2> yes seesm to be SFEN
19:13:19 <xkapastel> ais523: can i ask you a few questions about the jelly golfing language? specifically about the chain rules
19:13:49 <ais523> xkapastel: you can try, but I'm not that comfortable with the chain rules
19:14:04 <ais523> I normally have to reread the tutorial to try to figure it out, in complex cases
19:14:14 <xkapastel> the first chain pattern for monadic chains, `+ × 1 ... (v+ω)×1*`
19:14:29 <xkapastel> doesn't this follow from the rules for `+` and `+ 1`?
19:14:32 <xkapastel> i don't see why it's needed
19:14:50 <xkapastel> if you didn't have it, you would chop off `+`, then chop off `x 1` and it would be the same (v+w)*1
19:15:13 <ais523> it wouldn't surprise me if some of the rules were redundant
19:15:54 <xkapastel> also i'm wondering why dyadic chains don't have a rule for `+ F`, is that just because dennis didn't think it was used or becuase it messes something up?
19:16:24 <xkapastel> for dyadic chains i see why that first rule would lead to a different value than applying rules for `+` and `+ 1`
19:16:32 -!- AnotherTest has quit (Ping timeout: 256 seconds).
19:16:48 <xkapastel> because you'd match `+ *` first
19:17:20 <ais523> xkapastel: dyad chains tend to be awkward to use, I think the original intention was to do it APL-style and use patterns with { and } to do complex things
19:17:25 <ais523> but that uses so many bytes :-(
19:18:45 <xkapastel> i do really like this design though, and i appreciate how it's explained so clearly, as opposed to APL/K which seem to pride themselves on being cryptic
19:19:18 <ais523> in general I find any working with dyad chains in Jelly is painful, and prefer to use monadic chains for basically everything
19:20:25 -!- AnotherTest has joined.
19:27:48 -!- doaks has joined.
19:27:50 -!- doaks has quit (K-Lined).
19:50:48 -!- ffernand22 has joined.
19:50:57 -!- ffernand22 has quit (K-Lined).
20:09:30 -!- SopaXorzTaker has quit (Remote host closed the connection).
20:09:54 <esowiki> [[Arrows]] M https://esolangs.org/w/index.php?diff=57308&oldid=53838 * HereToAnnoy * (-4) Fixed spacing (I think; I really need a monospace font for this) + Ideas cat
20:44:56 <esowiki> [[Brainfuck implementations]] https://esolangs.org/w/index.php?diff=57309&oldid=57058 * Wright * (+625) Added entries
21:05:16 -!- dindon29 has joined.
21:09:56 -!- dindon29 has quit (Ping timeout: 272 seconds).
21:10:34 -!- AnotherTest has quit (Ping timeout: 272 seconds).
21:15:44 -!- tromp has quit (Remote host closed the connection).
21:31:55 -!- OwenBarfield has joined.
21:32:19 -!- OwenBarfield has quit (Killed (Sigyn (Spam is off topic on freenode.))).
21:39:05 -!- aloril has quit (Ping timeout: 240 seconds).
21:44:44 -!- aloril has joined.
21:44:55 -!- S_Gautam has joined.
21:54:54 -!- tromp has joined.
21:58:56 -!- lostnord has joined.
21:59:13 -!- lostnord has quit (Killed (Sigyn (Spam is off topic on freenode.))).
21:59:18 -!- tromp has quit (Ping timeout: 256 seconds).
22:25:58 -!- Guest59621 has joined.
22:26:19 -!- Guest59621 has quit (Remote host closed the connection).
22:32:45 -!- tromp has joined.
22:51:34 -!- Richard_Cavell has joined.
22:51:36 -!- Richard_Cavell has quit (K-Lined).
22:52:45 -!- tromp has quit (Remote host closed the connection).
23:06:52 -!- cronic has joined.
23:08:23 -!- tromp has joined.
23:10:04 -!- boily has joined.
23:11:21 -!- cronic has quit (Ping timeout: 240 seconds).
23:12:07 -!- ais523 has quit (Remote host closed the connection).
23:12:22 -!- ais523 has joined.
23:12:27 -!- tromp has quit (Ping timeout: 240 seconds).
23:39:51 <boily> fungot: nostril.
23:39:51 <fungot> boily: what's good about it, but i don't really have much to do
23:41:35 <boily> fungot: nostrils are good, but you can still eat pizza.
23:41:35 <fungot> boily: and i don't have to.
23:41:43 <boily> fungot: but you can.
23:41:43 <fungot> boily: so there are no answers anywhere, i guess. bummer
23:41:59 * boily is more than frightened about fungot's sentience
23:57:38 -!- imode1 has joined.
23:58:35 -!- imode has quit (Ping timeout: 240 seconds).
←2018-08-09 2018-08-10 2018-08-11→ ↑2018 ↑all