00:10:36 i haz found garbage http://esolangs.org/wiki/%E2%99%A6 00:11:52 check the history 00:12:27 i cant understand t 00:15:34 straight substitution seems too obvious but it's worth trying frequency analysis 00:21:13 define '<': increment ptrp; define '+': increment dup; define '-': decrement dup; 00:21:32 A esolang im working on has a sample bf intepreter (= 00:23:26 -!- oerjan has joined. 00:24:34 `` quote oerjan | shuf 00:24:41 615) * oerjan concludes that unsafeCoerce has no effect on strictness \ 614) but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot. \ 366) Will anyone be 00:24:55 -!- tromp_ has joined. 00:25:12 `quote 00:25:13 `quote 00:25:15 `quote 00:25:15 `quote 00:25:16 `quote 00:25:34 hichaf. turns out reading about a new mathematical concept a few hours before going to bed is not conducive to good sleeping hth 00:25:42 960) o.O OS/2 is what became NT? I didn't really know what OS/2 was 00:25:42 434) fizzie: i, myself, will bring an end to all. 00:25:46 879) GreyKnight: for instance, you can form a poset category from a bunch of tiles oh, that's why somebody was conflating category theory with bathroom interior design the other day :-D 00:25:46 117) GOODBAD! Your watered down brand of evil conflicts with my botched attempts at dogoodery! 00:25:47 1255) What is an esolang? shachaf: It's an archaic term for an Esolang 00:25:50 which new mathematical concept did you read about this time 00:26:08 on the plus side, i now understand why laver tables must have 2^n sizes if they exist. although not yet why they are shelves. 00:26:14 oh, that 00:26:37 `? laver tables 00:26:39 laver tables? ¯\(°​_o)/¯ 00:26:42 shelves are p. bizarre 00:27:01 how do you use le/rn/ again? 00:28:32 `le/rn laver table/A laver table is a type of Welsh furniture primarily used for eating seaweed. 00:28:38 Learned «laver table» 00:28:45 please improve twh 00:29:07 no hth 00:29:16 -!- tromp_ has quit (Ping timeout: 252 seconds). 00:29:35 i was talking to coppro hth 00:29:44 obviously i wouldn't ask the retiree 00:29:55 `? oerjan 00:29:57 Your retired mysterious evil cackling overlord oerjan is a lazy expert in future computation. Also an antediluvian Norwegian who mildly dislikes Roald Dahl. He can never remember the word "amortized" so he put it here for convenience. His arch-nemesis is Betty Crocker. He sometimes puns without noticing it. 00:30:24 good, good 00:30:52 `` sed -i 's/re//' wisdom/oerjan 00:31:12 /me swats shachaf -----### 00:31:42 have you been saving that one up 00:31:50 nope 00:32:02 shachaf: I was just going to quote wikipedia 00:32:18 laver tables are tables of numbers that have certain properties 00:32:37 do it 00:32:54 https://ncatlab.org/nlab/show/too+simple+to+be+simple 00:37:55 i made a thing: http://pastebin.com/680vBM4U 00:38:04 its the demo idea for a esolang im making 00:38:09 its a brainfuck intepreter 00:39:05 this just looks like a lang 00:39:25 Eh maybe. 00:39:37 its unique in its own ways 00:39:39 applescript is more esoteric than this 00:39:44 .-. 00:39:59 it may be useful still 00:40:08 think about it for a second 00:40:41 you could intepret a lot of languages in the finished product 00:41:06 i think the wikipedia article on Laver tables confuses racks with shelves. unfortunately there seems to be no article on the latter. 00:41:27 (racks have an extra requirement.) 00:42:58 Hey, at least lex is turing complete 00:43:19 oerjan: but what quandles twh 00:43:57 it's a real quandary 00:45:57 oerjan: also does the shelf operation have anything to do with S twah 00:47:59 shachaf: what do you think of this? http://pastebin.com/680vBM4U 00:48:08 the S combinator? looks awkward. 00:48:11 Why are you asking me? 00:48:22 because i want your opinion 00:48:43 But I've hardly talked to you. 00:51:01 "shelf" is not an easily googleable term tdnh 00:51:05 -!- tromp_ has joined. 00:51:06 * oerjan leaves a red link 00:52:51 Tromp_; what do you think of this? http://pastebin.com/680vBM4U 00:53:30 -!- ybden has quit (Quit: leaving). 00:54:43 Moon__: It's kind of rude to just ask your question of whoever is talking in the channel or just joined the channel. 00:55:01 It's also not too useful, because those are exactly the people who see what's going on in the channel anyway. 00:55:33 Srry 00:55:57 Moon__ i think's it's rather verbose:( 00:56:07 it refused to load until the very moment i pressed close, which i take as a sign not to look at it hth 00:56:42 (aka ^w) 00:56:59 That's why people ought to post raw links when they use pastebin.com 00:57:21 now xkcd. 00:57:30 im writing it so i can have aliases for things 00:57:47 I'd say its good for defineing intepreters :P 00:58:44 Here's the raw link oerjan: http://pastebin.com/raw/680vBM4U 00:58:59 TOO LATE 00:59:28 but but thats a bf interpreter and proof of turing completeness for something im makeing ;-; 00:59:39 -!- hppavilion[1] has joined. 00:59:45 Hia hppavilion[1] 00:59:54 hellmooon 00:59:58 s/ooo/oo/ 01:00:08 I seem to be formulating a collection of mathematical chess variants 01:00:13 i recommend not naming your languages after common unix utilities hth 01:00:17 Are chess variants like the BF derivative of board games? 01:00:31 oerjan: Oh, is somebody making a mistake? 01:00:35 Oh, i didnt know that lex was a unix util name 01:00:41 *facepalm* 01:00:45 Moon__: What's lex? 01:00:47 no because chess is kind of its own field in boardgames 01:00:53 (your lex, not our lex) 01:01:04 A language im working on 01:01:11 Not a one char command 01:01:12 Moon__: What's the concept? 01:01:20 One of the ones I thought of that I particularly like is Gaussian Chess 01:01:24 Which is like chess 01:01:29 Kinda like a data processer 01:01:42 Takes in data, does something to it, spits it out 01:01:49 Moon__: So a batch processor? 01:01:50 `8ball Are chess variants like the BF derivative of board games? 01:01:53 My sources say no. 01:01:56 Yay! 01:01:57 OKAY 01:01:58 i knew it 01:02:00 I wrote a brainfuck intepreter in it for proof of concept: http://pastebin.com/raw/680vBM4U 01:02:11 And turing completeness 01:02:27 ironically you aren't actually parsing the brainfuck input like you should 01:02:32 ? 01:02:45 What did i do wrong? 01:02:52 It goes throught the code one char at a time 01:03:11 you implement [] as independent jump instructions 01:03:22 which admittedly is how the original spec did it 01:03:24 -!- spiette has quit (Ping timeout: 246 seconds). 01:03:43 next means just ignore it 01:03:51 and go to the next char 01:04:23 But with the additional allowance that, instead of moving a piece, you may take the abs() of a piece or the sum or product of two pieces, where such an operation produces a piece with the position of the abs/sum/product of its inputs when they are treated as rank+file*i 01:04:33 whereas i would argue that [] loops are a syntactic construct and should be treated as such 01:04:43 Phantom__Hoover: Either solution is valid ATM 01:05:07 Well, my language is turing complete at least 01:05:11 Phantom__Hoover: I actually made a quite nice extension using the stack model (didn't publish it because it was a BF derivative) 01:05:29 i.e. the implementation should scan through the program and construct an AST of normal instructions and loops containing blocks of normal instructions 01:05:33 Phantom__Hoover: [] behaves as normal, and {} are like [] except they do nothing but serve as labels 01:05:39 ('normal' meaning '+-<>.,') 01:06:01 [] is while, {] is do-while, [} is if-then, {} is... well, that's just do 01:06:12 actually the "Use defines" command is sort of esoteric, i think. 01:06:13 Moon__, at the very least an implementation like that would demonstrate interesting data manipulation, rather than just iteration on an array 01:06:20 er *use 01:06:32 It's basically scope, but BF doesn't exactly do scope, so it's useless 01:06:51 even then, the brackets match each other and should be parsed 01:07:18 i beleive they wrk, only a function interpreter could prove me wrong 01:07:19 Moon__: Does it crash if the brackets don't match? As in, a surplus of leading brackets? 01:07:42 The lex implentation should prevent running off the file 01:08:23 Thats up to the person who implents it, really 01:08:30 Moon__: But does it crash if there are extra [s that DON'T try to look for their partner (e.g. if they're always prefixed with [-])? 01:08:33 it's not about how well the interpreter actually runs 01:09:08 It will stop, yes, but the intepreter wont full crash 01:09:17 it's about properly acknowledging the structure of the interpreted program, and making your interpreter implement something more interesting than the bog standard interpreter that everyone's written in C 01:09:27 Phantom__Hoover: I'm a fan of BF's stack strategy- they're a syntactic construct to a naive onlooker, yes, but if you can get away without parsing, goodonya 01:10:18 if someone wanted ,they could use 'on error ' constructs to handle errors like that 01:10:22 if you don't parse you're doomed to get quadratic overhead on looping 01:10:42 um maybe quadratic is the wrong word 01:10:50 oerjan: Ah, yes, that too 01:10:53 i'm not sure it's worse than a constant overhead 01:10:55 oerjan: Exponential? Polynomial? 01:10:55 Hey, can all y'all guys access a webpage at this URL? http://nlp.stanford.edu:8080/parser/ 01:10:59 but it's a really dumb constant overhead 01:11:08 tswett, no 01:11:11 tswett: Nope 01:11:26 No? 01:11:29 Phantom__Hoover: it's not constant if a large loop is frequently skipped 01:11:29 So isup.me is lying. 01:11:59 tswett: Yes, or we live in an oppressive regime and didn't notice the transition 01:12:01 Someone could write the parsar too, easy 01:12:08 -!- tromp_ has quit (Remote host closed the connection). 01:12:09 Moon__: If it's easy, make one 01:12:15 Moon__: Demonstrate the ease of your language 01:12:20 im not done with the specs 01:12:39 but they could use loops and 'replace with ' for that 01:13:23 what i wrote was a proof of turing completeness, really 01:13:58 Moon__: Yes, but it's not an elegant proof 01:14:10 Doesnt need to be 01:14:11 Moon__: If you can make a parser in it, the language will be provably interesting 01:14:33 True, ill make something 01:16:06 `` sed -i 's/Mexico/all Mexico/' wisdom/hackego 01:16:11 didn't get it quite right 01:16:13 No output. 01:16:19 `? HackEgo 01:16:21 HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. HackEgo is the slowest bot in all Mexico! 01:17:33 The only problem with writing a parsar is im lazy :P 01:18:00 there's a unix utility that can help with that hth 01:18:09 What? 01:18:24 shachaf: tdnh 01:18:44 -!- ^^v has quit (Ping timeout: 276 seconds). 01:18:46 oerjan: "tdnh" is not in my lexicon hth 01:18:54 `lex 01:19:15 also, lex cannot parse brackets, can it? 01:19:24 No output. 01:19:30 it's regexp-based, you need yacc/bison. 01:19:50 `which lex 01:19:52 ​/usr/bin/lex 01:20:09 'run external command @echo off 01:20:29 thats a theoretical lex command :P 01:20:53 Oh my god 01:20:59 ? 01:20:59 Moon__: sounds unlikely, since @echo off is the kind of thing you _don't_ implement externally. 01:21:03 oerjan: i said it can help, not that it'll do the whole job for you 01:21:09 and also i didn't name a utility 01:21:19 Dinosaur Comics: "THIS COMIC WILL NOT BE DISPLAYED TWICE" 01:21:20 is it 1sed 01:21:21 although someone here manage to make an external cd, so... 01:21:27 *managed 01:21:29 * hppavilion[1] refreshes the page 01:21:32 Different comic 01:21:46 Oh, it's the same with a different ending 01:22:07 hppavilion[1]: "with a different text" hth 01:22:07 would you all try writing in lex? 01:22:11 >_> <_< 01:22:19 oerjan: Yesh, there we go 01:22:21 Moon__: No 01:22:23 *yeah 01:22:45 Moon__: Make the language interesting and we will gravitate towards it 01:22:55 K 01:23:09 Moon__ is going through the try-to-make-others-use-his-language phase. soon, the despair. 01:23:49 then the vodka. 01:25:11 *is a electric badmitten racket maniac* 01:25:27 *trying to electricute flys* 01:25:37 so mad he forgets /me again 01:31:35 -!- tromp_ has joined. 01:32:15 Hi tromp 01:32:26 hi 01:35:51 `ls atmospheres 01:35:56 atmospheres 01:36:01 `culprits atmospheres 01:36:16 oerjan 01:36:21 oh duh 01:36:25 `rm atmospheres 01:36:30 No output. 01:38:35 how do you deal with spam on the eso wiki? 01:38:54 there's a captcha and a spam filter 01:39:01 thanks 01:39:14 and some blocked ips 01:39:50 the spam filter is rules handcrafted by ais523 01:40:20 like matching viagra? 01:40:40 -!- Moon__ has quit (Quit: jIRCii - http://www.oldschoolirc.com). 01:40:56 no. because bots don't understand proper wiki formatting, nearly all have strange but obvious things like
instead of newlines 01:41:30 *spambots 01:41:43 -!- Phantom__Hoover has quit (Read error: Connection reset by peer). 01:43:03 -!- Moon_ has joined. 01:43:09 back 01:43:58 so afaik there are no filters based on what the spammers try to advertise. 01:44:33 why not just recaptcha? 01:45:07 -!- tromp_ has quit (Remote host closed the connection). 01:45:48 -!- tromp_ has joined. 01:46:00 izabera: well those spammers that bother to hire out to a human captcha solver get through anyway. 01:46:59 last autumn or so some of them did that. but after ais523 updated the filters again, those held. 01:47:38 izabera: we were sort of running an experiment where we were using just _one_ captcha. and until last autumn that was pretty good. 01:47:50 one? 01:47:54 like, never changing? 01:47:56 (it just occasionally had to be changed, but just one.) 01:48:09 not automatically, no. 01:48:59 that probably doesn't scale too well 01:49:19 indeed. it was entirely based on the principle that we're too small to target specifically. 01:49:49 (if not, the filters probably would have been got around too) 01:53:07 i have decided to write a chatbot in C++ 01:56:58 why 01:58:05 Cuz 02:00:26 No reinventing the wheel, ill start from a skeleton, add the meat 02:01:20 -!- tromp_ has quit (Remote host closed the connection). 02:10:50 making a skeleton generally classifies as reinventing the wheel :) 02:11:28 but well, if you know enough C++11 and have boost at hands, not *that* hard I guess 02:12:25 import cleverbot 02:12:28 #done 02:13:06 its a irc bot >_> 02:13:13 neither is cleverbot 02:13:20 oh 02:13:22 i read that wrong 02:22:47 Anyone feel like (code)golfing? 02:25:26 i think the golfers are currently busy doing laver tables in binary lambda calculus. 02:27:07 i was thinking about challanging you all to write a brainfuck intepreter in the esolang of your choise 02:27:08 i like golfing 02:27:19 bindun 02:27:38 I have a programming language that is basically identical to brainfuck except that the empty program is a self-interpreter. 02:27:39 as small as possible 02:27:52 id call that cheating :P 02:28:28 just dont use cheaty ones and im ok with it 02:28:49 no, it is a rule-bending. after all golfing across different languages is... uh... not really worth arguing. 02:28:59 rule-bending one* 02:29:08 Are you a golpher? 02:29:11 Like the animal. 02:29:19 shachaf: gollang. 02:29:22 no-.- 02:29:30 lifthrasiir: Game of life language? 02:29:39 shachaf: sounds great 02:29:45 never thought in that way 02:29:55 Moon_: you think to compare cross-lang to get shortest interp? 02:30:04 Yea 02:30:56 i can't think what would be the best lang for that purpose 02:31:09 i wonder how long a jelly interp would be 02:32:16 -!- jaboja has quit (Remote host closed the connection). 02:32:35 http://chat.stackexchange.com/rooms/27364/esoteric-programming-languages 02:32:37 i found home 02:32:42 gnight 02:33:01 SE had a chat? I didn't know 02:33:50 the 103 byte simplex solution is the shortest one i can find 02:34:07 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 02:34:13 Moon_: that chat has very sporadic activity 02:35:52 Brian Raiter had 166-byte-long ELF binary (!) for BF interp http://www.muppetlabs.com/~breadbox/software/tiny/bf.asm.txt 02:36:18 activity spores 02:37:34 i bet i could do it in under 100 02:37:34 -!- Moon_ has quit (Ping timeout: 260 seconds). 02:37:41 (not a binary) 02:37:42 Moon_: 103 bytes barely beats my Binary Lambda Calculus one 02:38:14 which is 5 bits longer 02:38:26 oh 02:38:36 so you're not tuomas laakkonen 02:38:45 or are you 02:38:48 can we just declare BLC to be cheating and get it over with >:) 02:38:59 cheating how:-? 02:39:01 no 02:39:08 tromp: it's TOO GOOD hth 02:39:14 pfft 02:39:34 let's make BLC plus adaptive compression 02:39:53 you don't need to 02:39:54 you could do better 02:39:58 22:41:09 tromp: https://en.wikipedia.org/wiki/Binary_lambda_calculus says that Haskell-style I/O requires a type system, but that isn't true. 02:40:01 22:41:59 Not that BLC would benefit from Haskell-style I/O, for the things it's typically used for. 02:40:32 how would you do Haskell style IO shachaf? 02:41:06 extend the lambda calculus with readbit and writebit primitives? 02:41:30 For example with an a sum type like data IO = ReadBit (Bool -> IO) | WriteBit Bool IO | Done 02:41:41 Or you can make it a monad if you want to. 02:41:51 that's not untyped then?! 02:41:56 Of course you'd have to encode it in lambdas. 02:42:20 just use original haskell 1.0 hth 02:42:33 But the type system isn't really what prevents Haskell programs from mixing up "IO a" and "a", which is what that entry looked like it suggested. 02:42:47 oerjan: haskell 1.0 doesn't exist hth 02:42:57 the type sysmtem is needed to serialize io primitives 02:43:12 What do you mean? 02:43:16 If you can encode a list, you can encode this type. 02:43:52 you need to prevent things like writebit applied to writebit 02:43:58 shachaf: hm? 02:45:00 also, you dont want order of io operations to depend on order of evaluation 02:45:04 -!- centrinia has quit (Quit: Leaving). 02:45:06 It doesn't. 02:46:03 I wrote about this a bit in http://stackoverflow.com/a/13538351 02:46:55 When you encode a list in lambda calculus, do you need to prevent things like cons applied to a non-list? 02:46:56 shachaf: https://www.google.no/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwj4zdWEsc7MAhUK2SwKHWtSA0YQFggbMAA&url=https%3A%2F%2Fwww.haskell.org%2Fdefinition%2Fhaskell-report-1.0.ps.gz&usg=AFQjCNERSb6UmbpF5lvDfv5V3HZsJsVKlg&bvm=bv.121099550,bs.1,d.bGg 02:47:03 good url 02:47:12 stupid google doesn't let me link directly without opening it 02:47:22 it was meant to be a joke about old things not existing 02:47:28 but i didn't really think it through 02:47:43 MAYBE YOUR THOUGHT DIDN'T EXIST, HUH? 02:47:49 MAYBE 02:48:10 or maybe it existed so much that it wrapped around to not existing 02:48:28 more than you'll ever exist 02:48:30 `? ørjan 02:48:33 ​Ørjan is oerjan's good twin. He's banned in the IRC RFC for being an invalid character. Sometimes he publishes papers. 02:49:59 . o O ( a solipsistic AI simulation ) 02:50:05 -!- hppavilion[1] has joined. 02:50:28 are ørjan and oerjan påls 02:51:23 are you going to drag pål-ørjan into this, i had almost forgot the guy 02:53:11 looks like he has a twitter https://twitter.com/po_johansen 02:54:29 he seems to like LSD 02:56:32 ...and a norwegian wikipedia page. 02:57:41 thx for the link shachaf, will slowly digest that 02:57:56 -!- acertain has quit (Quit: Leaving). 02:59:15 +1 LSD 03:00:14 oerjan: wow, even i don't have a norwegian wikipedia page 03:00:35 https://www.reddit.com/r/science/comments/2ywf4a 03:00:38 shocking 03:01:14 "Please note, Pål and Teri do not have PhDs." 03:01:46 shachaf: AAAAAAAAAAA 03:01:56 -!- tromp_ has joined. 03:02:41 oerjan: maybe you can publish a joint paper about lsd homology 03:02:57 well, i guess a joint paper would be about a different drug 03:05:52 oerjan: how come harald didn't name his son pål 03:06:15 shachaf: nice write-up, but i don't see how to implement any of your approaches without types 03:06:19 i don't think pål is a traditional royal name 03:06:38 -!- tromp_ has quit (Ping timeout: 276 seconds). 03:07:03 well, this one would be principål 03:07:26 <\oren\> content delivery networks are the webs of the spiderdemon 03:07:33 tromp: I don't see what types have to do with it. 03:08:18 ContIO = Exit | PutStrLn String ContIO | GetLine (String -> ContIO) | ... is a type 03:08:30 Yes, and data List a = Nil | Cons a (List a) is a type. 03:08:39 But you can implement lists even in untyped lambda calculus. 03:09:19 but you cannot constrain lists in untyped lc 03:09:48 PutStrLn needs to constrain its argument to be a string 03:10:05 And Cons needs to constrain its second argument to be a list. 03:10:07 <\oren\> there are two doors between me and my wireless router. my internet is fastest when both are closed. 03:10:18 <\oren\> THIS DOES NOT MAKE SENSE 03:12:10 show me an alternative definition of BLC with IO primitives 03:13:47 and then we can discuss its semantics 03:14:56 <\oren\> maybe there's some weird geometry in my house that causes the signal to cancel itself out??? 03:17:30 There are lots of possible encodings in lambda calculus. 03:18:17 pick the simplest 03:18:46 Encode Exit as (\e w r -> e); WriteBit b k as (\e w r -> w b more); ReadBit k as (\e w r -> r k) 03:18:47 i just need readbit and writebit 03:19:35 I guess that's the Scott encoding. 03:20:34 you lost me alrd:( 03:21:25 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 03:21:32 \oren\: feng shui poltergeist hth 03:21:37 OK, how would you encode a program that generates a list of bits as output? 03:21:41 No input necessary. 03:22:58 in my model, any closed lambda term is a program that does binary IO 03:23:31 the input bit stream is represented as a list of booleans to which the term is applied 03:23:50 How do you represent a list? 03:24:26 cons = \M\N. \z. z M N 03:24:43 0 = \t\f. t 03:24:47 1 = \t\f. f 03:25:12 How do you terminate a list? 03:25:23 nil = 1 03:26:26 OK. Would you believe the encoding "cons = \M\N. \c\n. c M N"; "nil = \c\n. n"? 03:26:47 I.e., to consume a list cell, you pass it what to do in the nil case and in the cons case. 03:28:23 that works too 03:28:32 OK, so I'm doing the same thing. 03:28:47 Exit = \e\w\r. e 03:28:56 i just dont call that monadic IO 03:29:44 I didn't say it was monadic, though you can make it a monad easily enough if you want to. 03:30:32 i claimed that having readbit as a *primitive* of the lambda calculus language requires a type system 03:31:27 -!- lambda-11235 has joined. 03:32:03 Maybe we're just talking about different things. 03:32:33 i thought we're talking about https://en.wikipedia.org/wiki/Binary_lambda_calculus#Binary_I.2FO 03:33:18 where i contrast my approach to IO with that of Chaitin 03:33:27 "unless one distinguishes between an I/O action and its result, as Haskell does with its monadic I/O" 03:33:38 -!- hppavilion[1] has joined. 03:33:42 I'm just saying that the type system isn't what distinguishes between an I/O action and its result. 03:33:52 They're just completely different things. 03:34:12 The type system distinguishes between strings and integers, sure, but even without the type system they'd be different things. 03:34:19 i didnt say that 03:34:59 i said that a readbit *primitive* with monadic semantics requires a type system 03:35:25 OK. Perhaps I just misunderstood. 03:35:32 Though I think "monadic" is a red herring anyway. 03:36:03 you can omit the word monadic there 03:36:44 -!- sebbu has quit (Ping timeout: 244 seconds). 03:37:23 It would be good for more languages to make a distinction between IO action values and their results, even in the absence of type systems, and even in the absence of being able to abstract over the choice of a monad. 03:45:26 i use the word monadic to emphasize that distinction, but the "requires type system" refers to readbit being a language primitive 03:46:46 agree with Cale 03:48:46 -!- centrinia has joined. 03:49:15 Cale: why IO specifically and not other side effects? 03:49:28 since side effects could indirectly have IO effects 03:50:23 coppro: Well, IO is the stuff that you want some sort of support in the language implementation to interpret. 03:50:59 It's perfectly possible to carve out a subclass of pure lambda terms which encode IO actions 03:51:24 But without some sort of interpreter underneath which is going to carry out the effects, it doesn't really do much for you. 03:52:16 -!- centrinia has quit (Client Quit). 03:53:16 Cale: hmm... I'm not sure I agree 03:53:38 you do need language implementation (or library implementation) support 03:53:52 but I'm not sure that that's a reason to make a distinction 03:54:06 integer addition requires implementation support as well 03:54:13 Oh, you mean, "why is it a good idea to distinguish IO actions like we do in Haskell"? 03:54:33 ohhhh, I misread what you said 03:55:17 yeah, I'd still ask why not do that for any function with side effects 03:55:41 Well, obviously we'd rather not have arbitrary side effects at the same time 03:55:57 hmm 03:56:01 The idea is just to encode effects as values of a particular type 03:56:02 can you give an example, perhaps? 03:58:04 Well, you know how things work in Haskell, right? We have this separate parametric data type, IO t, representing actions which can be carried out and which may have arbitrary effects, before resulting in a value of type t if they succeed. 03:58:51 yep 03:59:36 You can think of such a value as consisting of some sort of encoding of what to do in what order in terms of various primitive I/O actions. It's possible to represent that entirely with a pure lambda term, taking the I/O primitives and bind, and return as arguments, and sticking them together somehow. 03:59:52 right 04:00:35 Not that you'd *need* to do this in an arbitrary other language -- just to say that as soon as your language is expressive enough to have lambda terms, it's expressive enough to represent IO actions purely. 04:00:47 right 04:01:42 I guess I don't really see the benefit in a language not built around purity 04:01:56 Having such a concept is nice because it lets you not worry about effects during evaluation -- you have this separate notion of the execution of one of these IO actions, where the thing is taken apart and the steps described are carried out 04:02:33 right 04:02:37 Well, it gives you a really nice formulaic way to pull a bunch of messy stuff out of the description of evaluation. 04:02:50 yeah 04:02:52 So in some sense, it's all about making the language more pure 04:03:04 But my point is that it really doesn't *require* a type system 04:03:04 I guess I was just thinking of trying to staple that onto, say, an OO language 04:03:29 It probably requires lambdas to not pull your hair out in anguish 04:03:34 yeah 04:03:40 Cale: You're making a similar point to the one I was making a few pages up, I think. 04:03:43 that would be a neat esolang actually 04:03:43 You're going to want something akin to bind and/or do-notation anyway 04:03:51 pure OOP 04:03:53 POOP 04:03:57 shachaf: I'm basically rephrasing what you were talking about 04:04:11 With more emphasis on monads, maybe. 04:04:24 I don't know that you get that much benefit out of having a monadic interface. 04:05:41 Well, you need *some* ways to glue these IO actions together. I hesitate to say that providing return and bind as operations is really giving you "monads" in any real sense, because the whole story about abstracting over a choice of monad is still lots more work. 04:06:21 But yeah, if you prefer to glue together IO actions in some other ways, then those are fine too 04:06:51 Well, the type you would get is a monad, whether or not you recognize it. 04:08:11 Yeah -- though recognising it may not have much use if it doesn't let you write code which will work with any monad and reuse it. 04:10:27 Like, people implement Maybe or State in various other languages, and they implement the monad operations for them, but I would resist the notion that they're "programming with monads" just for having done so -- the point at which you really start to use monads is when you write something like sequence or liftM2 and have it work for all the monads you'll ever define. 04:10:55 People's implementations of Maybe are often scow because they collapse Nothing and Just Nothing. 04:11:00 hah 04:11:04 Yeah, that too 04:11:17 btw, did you know that Aeson's JSON encoding of Maybe does that? 04:11:36 No. 04:11:44 I didn't, until information started getting destroyed in transit between my web frontend and backend 04:11:44 I guess it kind of fits with the JSON model. 04:12:28 yeah 04:12:32 the JSON model is odd 04:12:42 <\oren\> shachaf: Maybe Nothing is a stupid type 04:12:42 partly because of its genesis in javascript 04:12:54 \oren\: But it's a great value. 04:13:10 JavaScript can't really distinguish between an explicit and implicit null 04:13:22 at least, not without effort 04:13:26 We use the Template Haskell stuff to write all our ToJSON/FromJSON instances for both the frontend and backend of our apps, and so mostly don't have to worry about how anything is being encoded 04:13:36 :k Maybe 'Nothing 04:13:37 The first argument of ‘Maybe’ should have kind ‘*’, 04:13:37 but ‘Nothing’ has kind ‘Maybe k0’ 04:13:37 In a type in a GHCi command: Maybe Nothing 04:13:43 OR NOT 04:13:50 Cale: IIRC the Maybe Nothing thing was an accident rather than by design, wasn't it? 04:14:03 coppro: Yeah, well, kinda 04:14:04 \oren\: Wait, never mind. 04:14:18 Cale: I mean, how would you otherwise distinguish them in JSON? 04:14:28 since the default encoding of Maybe Foo is either as null or a Foo 04:14:29 coppro: They should be records with a tag 04:14:39 that doesn't match common usage at all though 04:14:46 Aeson has template haskell code which will construct instances for an arbitrary algebraic data type 04:14:58 they should have just used the TH code to write the instances, and everything would be good :) 04:15:01 <\oren\> > Maybe Nothing 04:15:03 Not in scope: data constructor ‘Maybe’ 04:15:03 Perhaps you meant variable ‘maybe’ (imported from Data.Maybe) 04:15:04 it wouldn't though 04:15:06 > Just Nothing 04:15:08 Just Nothing 04:15:10 because then they wouldn't have a way to deserialize null 04:15:21 <\oren\> :t Just Nothing 04:15:22 Maybe (Maybe a) 04:15:38 <\oren\> :t Nothing 04:15:39 Maybe a 04:15:57 <\oren\> :t Just Just Nothing 04:15:57 Cale: like, if it was a record with a tag, so would the inside 04:15:58 Couldn't match expected type ‘Maybe a1 -> t’ 04:15:58 with actual type ‘Maybe (a0 -> Maybe a0)’ 04:15:58 The function ‘Just’ is applied to two arguments, 04:16:11 <\oren\> :t Just (Just Nothing) 04:16:12 Maybe (Maybe (Maybe a)) 04:16:24 coppro: Well, I suppose I'm in a bit of a special position. We're using Haskell all the way through the applications I'm working on, so we don't actually *care* what the JSON looks like, so long as it's a faithful representation of the Haskell values. 04:16:25 so you'd have { "isNull": "false", "value": { "isNull": "false", "value": "something" } } 04:16:39 Cale: yeah, that's an unusual use case 04:17:01 <\oren\> hey i Just met you, and this is crazy, so here's my Number, so call me Maybe 04:17:09 being able to understand nulls for a datatype is important for things like JSON merge-patch 04:17:23 But yeah, the problem is that Just x can't be encoded the same way as x 04:17:33 It needs *some* kind of wrapper 04:17:40 it can *except* if x is itself a Maybe 04:17:46 or more accurately 04:17:51 if x itself has a null value 04:18:00 Aeson's model is that Maybe should be the only thing with a null value though 04:18:24 Yeah, I suppose you could do a bunch of awful type class nonsense to try to express which types have a JSON encoding that encodes something as null 04:18:43 you *could* define types like MaybeFoo = NoFoo | HasFoo Foo and serialize them "correctly" 04:18:54 Yeah, I ended up using Either () 04:19:51 I think I recall that conversation actually, now that I think about it 04:19:53 yeah that works 04:20:00 there's an iso anyway :P 04:20:06 -!- nisstyre has quit (Ping timeout: 246 seconds). 04:20:15 Yeah, it's just a really annoying gotcha 04:24:18 I'd expect that in most cases where you had some particular JSON format you wanted to match, you'd be defining your own types to represent its values, and writing the ToJSON and FromJSON by hand anyway, and so you might as well handle the nulls yourself then. 04:24:38 (rather than having the Maybe instance do it for you) 04:25:26 I think that's unlikely 04:25:44 I think the more realistic case is that you would have Maybe handle it 04:26:08 since it would be thins like "this field is either a string or null" 04:27:04 You could still have some explicit "nullable" JSON parser combinator, which does that 04:27:21 But I dunno, I don't think of Maybe as being the same thing as nullable. 04:28:29 I think realizing the importance of things like Just Nothing vs. Nothing is one of the benefits you get from learning Haskell. 04:30:07 In my case, it came up sort of semi-automatically (it would have been in a case where the type to use would have been determined by associated types, but we hadn't yet got to the point of automating it when I ran into the problem) 04:30:25 Cale: I think the use cases of nullables and Maybe are pretty similar 04:30:35 Basically, the thing was regarding representing patches to a Map k v as values of type Map k (Maybe v) 04:31:08 (this isn't a perfect encoding in general, since you'd really want that to involve a type representing a patch to a v, but regardless...) 04:31:37 When v happened to already be Maybe t, this mysteriously fell over at runtime 04:31:46 yeah 04:31:53 and it was quite hard to track down what the heck was happening 04:32:37 I'm thinking of writing an extension to brainfuck -- would it be against the spirit of bf to add a single cell that can hold strings, for file handling and env variables?d 04:32:46 (would have been harder still if the type class machinery for representing patches that we have now was in place) 04:33:28 But yeah, it sucks a bit needing to be careful that these type level programs which compute the types of patches don't accidentally put two Maybe's in a row 04:33:56 Cale: yeah, I feel like the "correct" solution there from a usability + workingness perspective would be to identify some types as supporting explicit nulls so that you can serialize them appropriately 04:34:10 -!- Moon_ has joined. 04:34:18 I think the correct solution is just to treat Maybe as you would any other algebraic data type 04:34:18 the more JSON-y way would probably be null vs. { "value": null } vs. { "value": value } 04:34:31 The TH instance is *fine* 04:34:32 that sucks for common users now 04:34:52 I don't think I agree -- note that it's only the *default* behaviour for Maybe 04:35:11 I'm Joe Stupid trying to use Aeson, I have a field which is encoded as either null or an integer 04:35:47 I try "Maybe Integer" but it always gives an error. I try "Integer" but it can't deserialize null. I give up and go use JavaScirpt. 04:36:15 We can still provide something like parseNullable :: Value -> Parser (Maybe a) 04:36:34 but now I have to explicitly write my To/FromJson instances 04:36:37 well, parseNullable :: (FromJSON a) => Value -> Parser (Maybe a) 04:37:08 yeah, well, if you care about the precise JSON representation, it makes sense to be doing that anyway 04:37:09 Cale: how come sql doesn't have let ... in ... 04:37:19 how do people live without it 04:37:19 shachaf: because it's scow? 04:37:36 can't argue with that 04:37:42 hahaha 04:38:05 Cale: I don't think that's the point of Aeson, though. 04:38:06 If you're at all interested in writing a new database, I have a few feature requests :P 04:39:07 -!- Moon_ has quit (Ping timeout: 260 seconds). 04:39:27 I really want a database with which my application can register a query in a semi-permanent fashion, and any time that a transaction commits which might affect the result of that query, the DB sends my application a diff of the results. 04:39:43 oh apparently someone opened an issue 04:39:44 https://github.com/bos/aeson/issues/376 04:39:44 Cale: http://www.rethinkdb.com/ hth 04:40:01 (I worked at that company a few years ago, though it was a very different database back then.) 04:40:20 Cale: oh wait that's you 04:40:28 Cale: maybe that wasn't you who I remember complaining about it then 04:40:35 I recall this discussion quite a while back 04:40:37 shachaf: Oh, yeah, I also want it to be statically typed. 04:40:42 coppro: Yeah, that was me :) 04:40:50 Well, obviously you would want that. 04:41:16 shachaf: and I want sum typed columns 04:41:44 e.g. "this column is a primary key of table A, B, or C, and we know which" 04:41:56 You mean that the value at a particular column is sum typed, or that you have one of a set of possible sets of columns? 04:42:13 The value at a particular column 04:42:41 and then the query language needs to be able to case on that information obviously 04:43:17 might have been when I was lurking #yesod 04:43:45 coppro: Well, I had most of this conversation in the bug ticket :) 04:44:06 I don't hang out in #yesod, so it wouldn't have been there 04:44:18 I might've mentioned it in #haskell at the time 04:44:27 Cale: What do you think about protobufs? 04:44:44 The interesting thing about them is that they let you change a data type and keep backwards compatibility. 04:44:53 shachaf: I don't know enough about them to have a strong opinion 04:45:03 Which is somewhat in contrast to the Haskell philosophy of having a type be able represent exactly the values you want and no more. 04:45:50 I'm not sure how to reconcile the two. 04:46:16 Cale: I don't think it was you, since it was definitely IRC and many months ago 04:46:23 Cale: the JSON merge-patch spec is actually a great example of JSON null conflation 04:46:33 common usage of JSON treats null weird 04:47:07 <\oren\> we use a sort of typed json at my work. the json is parsed into C++ a struct 04:47:18 coppro: If people want to shoot themselves in the foot by conflating Nothing and Just Nothing, there probably should be a way to do it, but I don't think it should be the default thing 04:47:38 <\oren\> and if it doesn't mathc the layout, it throws a character pointer 04:47:41 coppro: You could also make a newtype for it. 04:48:05 (and put a big warning label on it regarding what happens when you nest them) 04:48:24 Protobufs are certainly a better way to do communication and serialization than JSON for a lot of things. 04:48:25 -!- nisstyre has joined. 04:49:36 <\oren\> i forget where I was going with this 04:51:21 shachaf: In our case, the thing we really need some sort of migration strategies for is with respect to the database (this is the main reason we're using groundhog, which is a library very similar to persistent, and I don't really understand the differences), moreso than the stuff we use JSON for. 04:51:41 We *could* be just using Binary instances :) 04:52:38 It's just nice that when something goes wrong, the browser can show you the JSON and it's somewhat readable, if ugly. 04:52:39 Google's use case for protobufs is approximately everything. 04:52:44 Including RPC, for instance. 04:54:59 Cale: I agree that it shouldn't allowed 04:55:17 I like the idea of forbidding nesting and leaving the instance more than I like the idea of changin gthe instance 04:55:56 because the other instance is usually the correct one 04:56:08 anything else is asking for unnecessary gymnastics on the user's part 04:56:12 coppro: I sort of agree with you from the perspective of "what's most convenient for existing users", but I have half a mind just to fork the entire library to fix the thing :) 05:01:59 -!- tromp_ has joined. 05:06:53 -!- tromp_ has quit (Ping timeout: 276 seconds). 05:14:11 [wiki] [[User:Elronnd]] N https://esolangs.org/w/index.php?oldid=46989 * Elronnd * (+115) Created 05:15:34 -!- mukaiten has joined. 05:16:21 -!- mukaiten has quit (Remote host closed the connection). 05:21:01 <\oren\> goddamn ksp changing their wheel physics 05:29:53 physics rotation 05:33:27 -!- sebbu has joined. 05:34:16 [wiki] [[User:Elronnd/brainfcuk]] N https://esolangs.org/w/index.php?oldid=46990 * Elronnd * (+2905) First steps 05:39:34 [wiki] [[User:Elronnd/brainfcuk]] https://esolangs.org/w/index.php?diff=46991&oldid=46990 * Elronnd * (+32) update 05:41:47 ski: Do you know the type zzo38 calls CodensityAsk? 05:42:30 i haven't seen it 05:43:00 newtype CodensityAsk f a = CodensityAsk { runCodensityAsk :: forall r. f r -> (a -> r) -> r } 05:44:51 ok 05:45:47 zzo38 points out that CodensityAsk ((->) x) = Either x; CodensityAsk (Const x) = ((->) x); CodensityAsk Endo = Writer (Sum Natural); CodensityAsk Finalize = Identity; CodensityAsk Identity = Maybe 05:46:04 Where Finalize = Proxy, I guess. 05:46:55 hm was that the one we discussed adapting the (co?)yoneda lemma to? 05:47:12 in order to show those equivalences 05:47:23 I don't remember that. 05:48:01 hm maybe it was something differnet. 05:48:08 -!- Caesura has quit (Ping timeout: 265 seconds). 05:48:31 (some typos refuse to be fixed) 05:49:08 maybe you're thinking of dithernet 05:49:16 like ethernet, but with more dithering 05:49:32 nope 05:50:01 i recall (x,x) was represented using Bool 05:51:03 hm i think it was some connection between expressing a functor f in terms of f () 05:51:22 Representable functors? 05:51:26 perhaps 05:52:09 anyway it involved something yonedal 05:54:44 shachaf : 05:55:14 fizzie: Actually I wish Dremel had let. 05:56:45 I assume you're not talking about the Dremel I'm thinking of. 05:56:53 I think I am. 05:57:03 Oh, okay then. 05:57:10 Why? Does it have let? 05:57:17 Not to my knowledge. 05:57:28 Mysterious assumption. 05:57:31 Don't have access to the docs for it, but don't think so. 05:57:43 I assume dumb things all the time. 06:02:04 -!- Shubshub has joined. 06:02:41 Hey everyone 06:02:48 Hello. 06:03:50 arPhttps://www.dremel.com 06:04:09 HTTPS over ARP? 06:04:10 Hmm... https://www.dremel.com 06:04:29 I must have typed something with this window focused 06:04:37 I can't imagine what, though 06:06:27 shachaf : ok ? 06:06:53 I thought it was pretty neat, is all. 06:07:02 It's related to adjunctions somehow, I think. 06:07:39 After all, you know the definition of free objects that goes newtype Thing k a = Thing { runThing :: forall r. k a => (a -> r) -> r } 06:07:49 Cale: how come sql doesn't have let ... in ... 06:08:00 my link was in response to that ^ 06:08:34 Except a class can have laws and a type presumably doesn't. 06:09:05 ski: Yes, I know. 06:09:26 ok 06:10:58 [wiki] [[User:Elronnd/brainfcuk]] https://esolangs.org/w/index.php?diff=46992&oldid=46991 * Elronnd * (+1688) file handling 06:31:33 -!- hppavilion[1] has quit (Ping timeout: 240 seconds). 06:35:08 -!- hppavilion[1] has joined. 07:04:16 -!- tromp_ has joined. 07:08:33 -!- tromp_ has quit (Ping timeout: 240 seconds). 07:29:23 -!- lambda-11235 has quit (Quit: Bye). 07:37:22 -!- Shubshub has quit (Quit: On the other hand, you have different fingers.). 07:48:44 whew 07:51:19 -!- rdococ has joined. 07:53:00 -!- TellsTogo has quit (Ping timeout: 250 seconds). 08:12:41 b_jonas: ? 08:25:32 fungot: Will you, yourself, bring an end to all? 08:25:33 fizzie: i was just dropping by and told the message about increasing the stack size a while ago back when we were playing around with variable allocation to attempt to solve impossible problems 08:26:05 Well, I'm guessing that's as good an approach as any to solve impossible problems. 08:27:37 -!- zadock has joined. 08:34:23 fungot: hungot 08:34:23 shachaf: but if another program will halt or not 08:34:46 fungot: you just worry about yourself halting or not. let us worry about other programs. 08:34:46 shachaf: maybe so that the c literature doesn't use that many scheme primitives, only, max and make-string. 08:39:44 -!- zadock has quit (Quit: Leaving). 08:50:48 fungot: Do you have a halting oracle? 08:50:49 fizzie: i could allocate esoapi a fnord of a 08:58:13 ^style ct 08:58:13 Selected style: ct (Chrono Trigger game script) 08:58:31 fungot: what about using a sword? 08:58:32 oerjan: are you a man, if there weren't evil in this kingdom to you! 08:59:03 fungot: well sort of evil. 08:59:03 oerjan: as long as you keep crono in your heart, the day of lavos"... go to " leene square" 1000 a.d.? yes, i'd have done something very brave! he's probably up north, to guardia!!! let's toast our land! now we'll have some peace! magus is a tad on the spooky side. our only hope. 08:59:27 fungot: peace would be nice. 08:59:27 oerjan: your majesty! and queen. he and a friend left on a journey 10, then magic damage will be reduced by 10%. a star after any characteristic means it's at maximum strength! no matter what the price! it is, you idiot! hey! is that for us! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's t 08:59:56 fungot: ah. better to drop the sword, then. 08:59:56 oerjan: are you a man, if there weren't evil in this kingdom to you! 09:00:02 ^style irc 09:00:02 Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams) 09:02:03 indeed! this thing. 09:14:40 ^style calvinandhobbes 09:14:40 Not found. 09:17:36 ^style 09:17:36 Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp youtube 09:32:03 -!- hppavilion[1] has quit (Ping timeout: 240 seconds). 09:47:48 -!- AnotherTest has joined. 10:00:03 -!- oerjan has quit (Quit: Later). 10:21:11 -!- TellsTogo has joined. 10:38:55 what's the closest alternative to google code search? 10:39:57 izabera: rsc had a standalone version of google code search I think? 10:40:03 but only for *your* code. 10:41:52 but i want other people's code 10:42:02 really 10:42:57 reading that imagemagick thing made me wonder how many projects call system() without proper input sanitization 10:43:03 github search? 10:43:12 that's not good enough :( 10:43:14 no regex, unfortunately 10:48:18 ImageMagick thing? 10:49:01 imagemagick is stupid and it calls system(something) with user input in it 10:49:14 I mean, I'd believe it 10:49:17 https://imagetragick.com/ 10:50:44 OK 10:51:02 I'm glad that this doesn't (directly) affect me 11:03:22 -!- ybden has joined. 11:05:40 -!- tromp_ has joined. 11:10:01 -!- tromp_ has quit (Ping timeout: 252 seconds). 11:33:48 -!- boily has joined. 11:35:53 `wisdom 11:36:54 snow//Snow is Jesus's dandruffs, and some suspect that he is the son of Rhaegar Targeryan. It turns the sidewalks to white as if someone broke a lot of styrofoam on it. 11:38:43 -!- earendel has joined. 11:38:54 -!- earendel has quit (Changing host). 11:38:54 -!- earendel has joined. 11:42:14 `? styofoam 11:42:17 styofoam? ¯\(°​_o)/¯ 11:42:25 `? styrofoam 11:42:27 styrofoam? ¯\(°​_o)/¯ 11:42:46 `? foam 11:42:47 `learn styrofoam is Taneb's only weakness. 11:42:48 foam? ¯\(°​_o)/¯ 11:42:58 Learned 'styrofoam': styrofoam is Taneb's only weakness. 11:46:19 https://i.imgur.com/wAI1Jwm.jpg 11:47:48 izabera, from a certain point of view, that's very logical, although symptomatic of skewed priorities 11:49:15 Tanelle. the sound, the smell, the touch of it makes you feel wrong? 11:49:16 There's grepcode.com, but it's only for Java stuff. 11:50:45 boily, the sound, mostly 11:50:53 The touch, too, to a lesser extent 11:51:23 If I buy something in styrofoam, I have to get someone else to unpack it while I'm in a different room 11:59:34 -!- TellsTogo has quit (Ping timeout: 250 seconds). 12:02:05 -!- TellsTogo has joined. 12:18:51 -!- boily has quit (Quit: REALPOLITIK CHICKEN). 12:34:05 -!- earendel has quit (Ping timeout: 276 seconds). 13:06:08 `? top hat 13:06:10 `? high hat 13:06:13 `? hi-hat 13:06:21 `? up hat 13:06:23 `? hi hat 13:06:25 `? top quark 13:06:29 `? up quark 13:07:10 wakey wakey, HackEgo 13:07:23 kernel:[957239.928577] BUG: soft lockup - CPU#1 stuck for 21s! [nginx:632] 13:07:43 `reboot 13:08:18 No output. 13:08:27 There's 61 umlbox processes all fighting for CPU time. 13:08:46 No output. 13:08:48 top hat? ¯\(°​_o)/¯ 13:08:49 No output. 13:08:49 hi hat? ¯\(°​_o)/¯ 13:08:49 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: reboot: not found 13:08:50 No output. 13:08:51 up quark? ¯\(°​_o)/¯ 13:08:52 maybe it's a hard disk failure or a disk hard failure?? 13:09:18 `? high hat 13:09:19 high hat? ¯\(°​_o)/¯ 13:09:25 `? hi-hat 13:09:26 hi-hat? ¯\(°​_o)/¯ 13:09:30 `? up hat 13:09:32 up hat? ¯\(°​_o)/¯ 13:09:41 `? top quark 13:09:42 top quark? ¯\(°​_o)/¯ 13:10:02 Not having much luck there. 13:10:41 `slashlearn high hat/A high hat is the same as a top hat, not the same as a hi-hat, just like how a top quark is not the same as an up quark. 13:10:44 Learned «high hat» 13:13:58 `? orkut 13:13:59 orkut? ¯\(°​_o)/¯ 13:14:00 `? myspace 13:14:01 myspace? ¯\(°​_o)/¯ 13:14:13 `? os/2 13:14:15 os/2? ¯\(°​_o)/¯ 13:14:17 `? os2 13:14:18 os2? ¯\(°​_o)/¯ 13:22:57 -!- ^v has quit (Ping timeout: 260 seconds). 13:25:50 -!- ^v has joined. 13:52:29 -!- tromp_ has joined. 13:52:40 -!- vanila has joined. 13:52:41 helo 13:57:09 -!- tromp_ has quit (Ping timeout: 260 seconds). 14:15:56 `? vms 14:15:58 vms? ¯\(°​_o)/¯ 14:16:09 `? plan9 14:16:10 plan9? ¯\(°​_o)/¯ 14:16:11 `? plan-9 14:16:13 `? plan 9 14:16:13 plan-9? ¯\(°​_o)/¯ 14:16:14 plan 9? ¯\(°​_o)/¯ 14:16:39 `? hurd 14:16:41 hurd? ¯\(°​_o)/¯ 14:16:52 there should be something in there about those operating systems 14:17:06 why 14:21:03 -!- Sgeo has quit (Ping timeout: 240 seconds). 14:21:06 Some kind of bitcoin inspired capture the flag programming game http://hackcha.in/ 14:42:27 . o O ( does it hurd when I say this? ) 14:44:39 -!- jaboja has joined. 14:46:01 `learn Plan9 is the precursor to Inferno, home of the Limbo programming language. 14:46:09 Learned 'plan9': Plan9 is the precursor to Inferno, home of the Limbo programming language. 14:46:15 (all true) 14:47:03 hmm, let's tweak it a bit. 14:47:11 `learn Plan9 is the precursor to Dante's Inferno, home of the Limbo programming language. 14:47:16 Relearned 'plan9': Plan9 is the precursor to Dante's Inferno, home of the Limbo programming language. 14:49:21 -!- `^_^v has joined. 14:51:48 -!- jaboja has quit (Ping timeout: 250 seconds). 14:53:14 wtf, so in C, the "%n" conversion takes type modifiers like "%zn" or "%hhn"? 14:56:08 lol 14:56:14 %n is absolute ridiculous 14:57:12 I guess worse is just the fact format strings need not be statically known 15:01:23 no, %n is totally useful. but %hhn is ridiculous. why is that even allowed? 15:02:06 when is %n useful 15:03:43 vanila: when I want to test if a sscanf match is successful, or consumed all of a string. for the former, it's easier to use than the return value of sscanf, because you don't have to count format entries in the pattern when writing the source code. for the latter, it's absolutely necessary. 15:04:19 ah thats a nice techinique, i was only thinking about printf 15:04:35 yes, for printf it's not very useful 15:04:41 -!- jaboja has joined. 15:06:33 I've been trying to contrive a use for %hhn, but so far I have nothing 15:06:52 prooftechnique: you can probably find some eso-use 15:06:58 Maybe some kind of cipher? 15:07:39 I'm just trying to imagine what the motivation was for having it in printf 15:08:05 Someone must have used it for *something* 15:08:35 prooftechnique: I think it's just so that sscanf handles writing integers uniformly, converting them to the right integer type regardless if the conversion is any of diouxXn 15:08:50 the rules would have been uglier otherwise 15:09:06 Yeah, I guess that fits. 15:09:07 and then in sprintf, it would be strange to disallow it if sscanf allows it 15:35:04 %n is useful for exploiting C programs that give input strings directly to pritnf 15:48:27 -!- spiette has joined. 15:53:52 -!- tromp_ has joined. 15:55:55 -!- FreeFull has quit (Quit: Rebooting into new kernel). 15:57:54 -!- FreeFull has joined. 15:58:13 -!- tromp_ has quit (Ping timeout: 252 seconds). 16:08:31 -!- jaboja has quit (Ping timeout: 250 seconds). 16:24:27 You kinda-sorta can use %n with sprintf to save one extra strlen call, if you, say, print a number, and need to know how long it was. 16:25:53 Hmm, that's a thought 16:28:28 Well, okay, you get *that* via the return value as well. But maybe you might conceivably need to know the lengths of some substrings. 16:33:38 -!- nycs has joined. 16:34:31 -!- `^_^v has quit (Ping timeout: 252 seconds). 16:44:45 -!- Reece` has joined. 16:50:08 -!- Phantom_Hoover has joined. 17:21:25 no. because bots don't understand proper wiki formatting, nearly all have strange but obvious things like
instead of newlines 17:21:39 you do need to do
to do single-line breaks in mediawiki 18:04:40 -!- vanila has quit (Remote host closed the connection). 18:07:32 -!- hppavilion[1] has joined. 18:08:17 I think we could triple the topic's entertainingness by allowing "people" to be replaced with some other demonym (not sure what limiting condition to use yet) and "cloaks" to be other sorts of normal word-turned-tech word 18:09:08 folkses with cloakses 18:09:14 Example: Note: reptilian overlords with will be treated as if they're from Saint Petersburg (not Saint Petersburg) 18:13:07 -!- hppavilion[1] has set topic: The international hub of solid matrices | Home of the world's largest ball of threads | logs: http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D | http://esolangs.org/ | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf | Note: reptilian armada commanders with cookies will be treated as if they're from Saint Petersburg (not Saint Petersburg). 18:13:12 Just going to see if that sticks 18:13:28 (See #esoteric:Be Bold in editing the topic) 18:15:02 ^style 18:15:03 Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp youtube 18:15:12 ^style lovecraft 18:15:12 Selected style: lovecraft (H. P. Lovecraft's writings) 18:15:21 fungot: Lovely weather we're having 18:15:21 hppavilion[1]: published fnord 1922 in home brew vol. 1, p. fnord vol. 17, no. 1 ( march 1936), p. fnord. 18:15:38 dammit, fungot. That didn't work 18:15:39 hppavilion[1]: " the flame the flame beyond body, beyond life in the boy, with imagination as his one avenue of freedom. he had, he declared, studies of much more vital importance to pursue; and intimated a wish to look out over the waters to the white ship 18:15:58 That was a little better 18:16:40 ^style darwin 18:16:40 Selected style: darwin (Books by Charles Darwin -- you know, that evilution guy) 18:16:45 Oooh 18:16:51 fungot: Lovely evolution we're having 18:16:52 hppavilion[1]:/ offspring :) a single race, that :)/ fish to such a degree as before. i have heard it stated that they are anywhere lined by reefs; except in a very southerly course,/ whole, i.e. about/ rattle-snake, look to some special conditions :) life must play a most important fnord it might be a great kindness, and return them in hopes :) receiving another, it was tender when first introduced to a new edition :) ( youatt 18:16:57 ... 18:17:05 Darwin used a lot of smiley faces. 18:17:36 ^style darwin+lovecraft 18:17:36 Not found. 18:17:37 ... 18:17:52 fizzie: Fungot does not support compound styles. i iz sad. 18:18:38 what would that even mean 18:19:02 (I would recommend a|b makes it choose between styles a and b for the entire message, and a&b would juxtapose the styles) 18:20:23 int-e: It would take the "product" of the two styles (calculating by multiplying the frequencies of each word, with 0 equaling 1 so that words only used by 1 don't get thrown away), allowing it to sound a little darwin and a little lovecraft 18:21:08 int-e: Thus, you might get Darwin talking about the evolution of cthulhu 18:21:16 (well, not really, but you get the picture) 18:21:30 ^help 18:21:30 ^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 18:21:38 ^style help 18:21:38 Not found. 18:22:51 @tell fizzie fungot lacks support for compound styles (e.g. darwin&lovecraft), which gives me sads. 18:22:51 Consider it noted. 18:22:52 hppavilion[1]: from/ facts above given and from/ honour so gained it might ultimately have become/ universal habit. according to parmentier " 5? 13. sir archibald geikie as having long been :( a subject :) which you have now fnord, fnord 18:36:54 -!- hppavilion[2] has joined. 18:40:28 -!- hppavilion[1] has quit (Ping timeout: 252 seconds). 18:43:29 hppavilion[2], hmm, i don't think that'd work with a markov chain 18:43:59 Phantom_Hoover: LIES 18:44:44 -!- MDude has joined. 18:46:06 -!- EggBot has joined. 18:46:06 -!- EggBot has quit (Read error: Connection reset by peer). 18:46:44 Yay! 18:46:47 It's beginning to work! 18:46:50 -!- EggBot has joined. 18:47:24 -!- EggBot has quit (Read error: Connection reset by peer). 18:47:40 -!- EggBot has joined. 18:47:48 Yay! 18:52:31 -!- hwpplayer1 has joined. 18:52:57 Interpolating between n-gram models is certainly possible, but I don't think I feel like actually implementing that in Befunge. 18:53:12 Especially given how the current code is. 18:53:22 fizzie: You clearly have lost the spirit for #esoteric. Sorry to see you go. 18:55:22 -!- tromp_ has joined. 18:55:30 The code's rather intertwined with the binary file formats. For example, the n-grams are stored (and sampled from) in terms of numeric "tokens", which are mapped back to words only at a very late stage (once the entire sentence has been constructed), and the token-to-text mappings are entirely separate for each style. 18:56:19 There's no way for it to know that 1235 of the irc style is the same word as 724 of some other style, for example. 18:56:37 I could precompute some mixed styles, but that's so brute-force. 18:57:42 fizzie: Oh :/ 18:57:53 fizzie: Should've used hashing. 18:58:27 -!- jaboja has joined. 18:59:06 Then the numbers wouldn't have been contiguous. 18:59:17 (And they're used directly as the file offsets.) 18:59:30 -!- tromp_ has quit (Ping timeout: 244 seconds). 19:05:21 `random-card 19:05:22 `random-card 19:06:02 Hollowhenge Beast \ 3GG \ Creature -- Beast \ 5/5 \ DKA-C 19:06:02 Debt of Loyalty \ 1WW \ Instant \ Regenerate target creature. You gain control of that creature if it regenerates this way. \ WL-R 19:07:12 `words --finnish --english 20 19:07:22 Unknown option: english 19:07:27 Aw. 19:07:31 It was something else. 19:07:32 `words -l 19:07:34 valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian --esolangs \ default: --eng-1M 19:07:38 `words --finnish --eng-1M 20 19:08:09 alairali polkismal irrettama fundamentänsä ticotilitsentärkt ahaaso prcv ilonitschcl vercla imattin ait boot luche thinfini muristor ching notkikolly sannerastisaa hypähän geofyl 19:09:22 `recipe 19:09:24 ​-- solid halves \ 2 tb Dijon mustard \ \ In small bowl, stirring to decorate, about 4 minutes. \ \ Remove from pan or until it gets roll is cooked. Drain beans; spread one egg \ yolks in a large bowl. Pour off fruit slices. Make a slices of the sauces, \ and white replacer pieces from liquid. \ \ Recipe By : ISBN 315-786-1120 \ \ M 19:09:34 `recipe 19:09:35 ​/3 c Unsweetened cocoa \ 2 lb Boneless chicken \ -pepper; seeded \ 2 tb Sour cream or flour \ 1/4 ts Dried parsley \ 1/2 ts Baking soda \ 1/2 ts Cayenne pepper \ \ Cut onion and frozen into provide peach over tops of liquid. Mix cornmeal, syrup, \ pepper and chopped parsley. Makes 3 cups. Parchmenchic, \ Date: More excecked \ fat 199 19:10:45 `random-card 19:10:47 Yavimaya Ancients \ 3GG \ Creature -- Treefolk \ 2/7 \ {G}: Yavimaya Ancients gets +1/-2 until end of turn. \ AI-C, ME2-U 19:11:14 `random-card 19:11:18 Cryptic Cruiser \ 3U \ Creature -- Eldrazi Processor \ 3/3 \ Devoid (This card has no color.) \ {2}{U}, Put a card an opponent owns from exile into that player's graveyard: Tap target creature. \ BFZ-U 19:11:34 `random-card BBB$ 19:11:36 Necropotence \ BBB \ Enchantment \ Skip your draw step. \ Whenever you discard a card, exile that card from your graveyard. \ Pay 1 life: Exile the top card of your library face down. Put that card into your hand at the beginning of your next end step. \ IA-R, 5E-R, VMA-R, ME2-R, V09-M 19:12:00 `random-card WUBRG 19:12:01 Coalition Victory \ 3WUBRG \ Sorcery \ You win the game if you control a land of each basic land type and a creature of each color. \ IN-R, TSP-S 19:12:28 `random-card UNH 19:12:30 Loyal Cathar \ WW \ Creature -- Human Soldier \ 2/2 \ Vigilance \ When Loyal Cathar dies, return it to the battlefield transformed under your control at the beginning of the next end step. \ [Front face. Transforms into Unhallowed Cathar.] \ DKA-C 19:12:43 `random-card UNH- 19:12:45 Cheap Ass \ 1W \ Creature -- Donkey Townsfolk \ 1/3½ \ Spells you play cost {½} less to play. \ UNH-C 19:12:45 -!- EggBot has quit (Remote host closed the connection). 19:12:53 Dammit 19:12:54 `random-card UNH- 19:12:55 Graphic Violence \ 2G \ Instant \ All creatures by the artist of your choice get +2/+2 and gain trample until end of turn. \ UNH-C 19:13:00 -!- Caesura has joined. 19:13:11 shachaf: You crashed eggbot xD 19:13:16 shachaf: it's case-insensitive by default but can be case-sensitive with (?i) 19:13:26 `random-card comes into play 19:13:28 Charm School \ 2W \ Enchant Player \ When Charm School comes into play, choose a color and balance Charm School on your head. \ Prevent all damage to you of the chosen color. \ If Charm School falls off your head, sacrifice Charm School. \ UG-U 19:13:54 `random-card - [0-9]$ 19:13:56 Deep Reconnaissance \ 2G \ Sorcery \ Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library. \ Flashback {4}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) \ OD-U 19:14:16 `random-card \- [0-9]$ 19:14:19 No output. 19:14:30 `random-card ular 19:14:32 Gerrard's Irregulars \ 4R \ Creature -- Human Soldier \ 4/2 \ Trample, haste \ MM-C 19:14:35 `random-card ular 19:14:37 Battle Mastery \ 2W \ Enchantment -- Aura \ Enchant creature \ Enchanted creature has double strike. (It deals both first-strike and regular combat damage.) \ LRW-U, M15-U, DTK-U, DDL-U 19:14:49 `random-card dular 19:14:52 Arcbound Reclaimer \ 4 \ Artifact Creature -- Golem \ 0/0 \ Remove a +1/+1 counter from Arcbound Reclaimer: Put target artifact card from your graveyard on top of your library. \ Modular 2 (This enters the battlefield with two +1/+1 counters on it. When it dies, you may put its +1/+1 counters on target artifact creature.) \ DST-R 19:15:11 `random-card [0-9] \( 19:15:13 Reality Acid \ 2U \ Enchantment -- Aura \ Enchant permanent \ Vanishing 3 (This Aura enters the battlefield with three time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.) \ When Reality Acid leaves the battlefield, enchanted permanent's controller sacrifices it. \ PLC-C 19:15:17 `random-card [0-9] \( 19:15:19 Forked-Branch Garami \ 3GG \ Creature -- Spirit \ 4/4 \ Soulshift 4, soulshift 4 (When this creature dies, you may return up to two target Spirit cards with converted mana cost 4 or less from your graveyard to your hand.) \ BOK-U 19:17:06 -!- EggBot has joined. 19:17:15 What prefix should eggbot use? 19:17:21 Currently it's --, but it doesn't do anything 19:17:47 hppavilion[2]: um, what will it want to do? 19:17:57 b_jonas: Just a collection of fun tools 19:18:02 b_jonas: Like IRC Thoof 19:18:13 hppavilion[2]: you can try "EggBot: " as the prefix at first 19:18:22 b_jonas: That is supported as well 19:18:25 and only later add shortcuts if it's useful 19:18:28 it is? 19:18:30 I'll just stick with that for now, thanks 19:18:31 EggBot: help 19:18:36 All the single digit punctuations are taken I think 19:18:38 EggBot: commands 19:18:40 b_jonas: It doesn't have any commands yet 19:18:45 EggBot: list 19:18:47 EggBot: version 19:18:53 EggBot: unignore 19:18:54 b_jonas: No commands at all 19:18:57 ok 19:19:04 b_jonas: It's just an empty shell ATM 19:19:05 not even hidden ones? 19:19:14 EggBot: invite perlbot 19:19:24 EggBot: join #esoteric-blah 19:19:38 b_jonas: Literally nothing. It's not done yet 19:19:51 sure but, I still have to try 19:46:03 -!- EggBot has quit (Ping timeout: 240 seconds). 19:46:28 -!- hppavilion[2] has quit (Ping timeout: 250 seconds). 19:51:50 -!- hppavilion[2] has joined. 19:59:50 -!- rdococ has quit (Quit: gtg). 20:32:09 -!- shikhin has changed nick to shikhincat. 20:32:39 -!- shikhincat has changed nick to shikhin. 20:33:22 -!- ybden has changed nick to neither. 20:33:32 -!- neither has changed nick to either. 20:33:36 -!- Reece` has quit (Ping timeout: 276 seconds). 20:33:47 -!- either has changed nick to ybden. 20:42:14 -!- hwpplayer1 has quit (Remote host closed the connection). 20:43:13 For some reason 20:43:35 I'm translating Romeo and Juliet into a highly exaggerated version of gamerspeak in a Garry's Mode chat log 20:43:48 (With a friend. For an assignment. At school. That I plan to turn in.) 20:43:57 At one point, this line appears: 20:44:09 [S4MP50N Quickscopes a Tromp Rat npc from the "1337 5p4ce F1gh75 M0d" mod] 20:44:15 I don't know why I made that joke 20:44:49 Some sort of hybrid between a Star Wars reference, some xkcd jokes, and a reference that no one will ever get to this specific channel 20:47:50 ("tromp rat") 20:48:20 -!- Akaibu has joined. 20:48:21 (no one will ever get the reference; they'll just think it's a slightly-off-brand rename from "womp rat") 21:02:22 I didn't get home in time to see the first Eurovision semi-final live. :/ 21:18:34 -!- TellsTogo has quit (Ping timeout: 250 seconds). 21:34:36 -!- nycs has quit (Read error: No route to host). 21:35:22 -!- hppavilion[2] has quit (Ping timeout: 252 seconds). 21:35:39 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)). 21:35:54 -!- hppavilion[2] has joined. 22:05:31 -!- Moon_ has joined. 22:06:00 Hi 22:07:26 N1:1:aa;Naa:2:aa;$o=aa 22:14:32 [wiki] [[User talk:Moon]] N https://esolangs.org/w/index.php?oldid=46993 * Moon * (+59) /* Bug reporting */ new section 22:26:31 -!- spiette has quit (Quit: :qa!). 22:27:29 whats the stub code? 22:27:37 for making a article a stub? 22:30:48 I'm going to guess {{Template:Stub}}, but maybe somebody could confirm. 22:31:02 (Or just look at an existing stub article for reference.) 22:31:18 [wiki] [[N--]] N https://esolangs.org/w/index.php?oldid=46994 * Moon * (+438) Created page with "N-- is a 3 instruction minimalistic variable based language, it has three commands. * N: Nand, format: Ninput1:input2:outputvar; * =: Set variable, format: var=varnumorchar;..." 22:31:49 Oh, it's just {{stub}} as well. 22:32:02 I guess maybe template transclusion picks from the template namespace by default? Who knows. 22:32:11 you told me too late lol, i hit the wrong button anyways 22:32:19 [wiki] [[N--]] https://esolangs.org/w/index.php?diff=46995&oldid=46994 * Moon * (+9) 22:32:20 i love how we can't use any standard mediawiki infrastructure because the wiki is public domain 22:32:52 all of that infrastructure is CC? 22:33:29 N1:1:aa;Naa:2:aa;$o=aa does a thing, what it does i dunno, as i havent make a intepreter yet 22:35:12 what lang is it? 22:35:19 quintopia, you mean on the esolang wiki or? 22:35:57 the standard infrastructure you referenced 22:36:49 N-- 22:36:56 The one i just published :P 22:37:37 wikipedia's CC licence does not allow you to relicense to PD 22:37:46 obviously, because otherwise it'd just be a PD licence 22:38:35 thats what i was asking. ifvall that stuff was CC 22:39:07 its hard to know what is PD and what is not 22:39:20 i assume it is, because it's under the standard wikipedia licence 22:39:55 PD? 22:39:59 Oh, public domain 22:40:01 Duh 22:40:08 Police department. 22:40:23 Pooch Department 22:40:48 Posh detergent. 22:41:16 [wiki] [[N--]] https://esolangs.org/w/index.php?diff=46996&oldid=46995 * Moon * (+97) Hello, world! example, i forgot it 22:41:51 Phantom_Hoover: Would it work to get whoever runs the wiki to allow a license exemption where "Most of the wiki is public domain, but specially-marked areas are CC"? 22:41:59 Thus allowing us to use mediawiki infrastructure? 22:42:09 you'd need every contributor to relicense it 22:42:14 Phantom_Hoover: ? 22:42:27 Phantom_Hoover: No, our wiki 22:42:34 ah ok 22:42:47 Phantom_Hoover: Who would have the power to do such a thing? 22:42:52 maybe. we've gotten by OK as it is, i just find it kind of amusing 22:43:20 hppavilion[2]: that would make the wiki less esoteric 22:43:22 Does using MediaWiki force all the content to be under CC? 22:43:51 Or is it that the wiki itself is also meant to be PD? 22:43:52 mediawiki does not care about content licensing 22:43:58 wikimedia does 22:44:50 All right, so same question mutatis mutandis 22:44:58 -!- AnotherTest has quit (Quit: ZNC - http://znc.in). 22:48:21 quintopia there you go: N1:1:aa;Naa:2:aa;$o=aa + N-- specs = program 22:53:01 hi, int-e. i shaved off a few more bits 22:53:26 From what? 22:53:36 from the laver tables:( 22:54:04 https://github.com/tromp/AIT/blob/master/laver.lam 22:54:19 lamver tables 22:55:10 Does BLC turn recursion into an inline Y combinator? 22:55:15 yes 22:57:01 -!- tromp_ has joined. 22:57:25 see lines 57-62 of Lambda.lhs 22:57:36 Yes, I found it. 22:57:43 Does the compiler do all sorts of optimizations? 22:57:57 some sorts. see optimize function in AIT.lhs 22:58:50 Does it beta-reduce fix? 22:59:12 sure, if it reduces size 22:59:34 so not fix itself, but application of fix 22:59:41 Right. 22:59:55 -!- centrinia has joined. 23:00:05 there's a lot more optimization it could do 23:00:41 like eta reduction 23:00:41 I see what it does. 23:00:55 Hmm, is BLC non-strict? 23:01:09 -!- tromp_ has quit (Ping timeout: 246 seconds). 23:01:22 yes 23:02:06 the Haskell implementation is as lazy as Haskell itself 23:02:25 the obfuscated interpreter is call-by-need 23:02:45 in the interest of saving many bytes:) 23:06:21 -!- hppavilion[2] has quit (Ping timeout: 276 seconds). 23:11:20 Hmm, so when you name an expression in a BLC program, does it just get inlined in every place it's used? 23:11:37 Or does it make a lambda and apply it to an argument? 23:12:03 the second, but if only used once, a beta reduction will be applied to give the first 23:12:41 Even if it's not the first argument? 23:12:53 sure 23:13:00 wait 23:13:50 it will be the first argument of some expr then 23:14:24 since a let defining 3 names will compile to 3 applications 23:14:29 Sure, but that expression might be an application and not a lambda. 23:14:59 I mean something like ((\x -> (\y -> ...x...x...y...x...x...)) many) one 23:16:37 parentheses wrong? you mean y binds to many? 23:16:51 tromp: "save two bits" can't be right... it works for a = 0 and a = 1, and somewhat amazingly for a = 2 as well, but for a = 3 and b = 1 it gives 0 instead of 2 as its answer. 23:17:29 No, x binds to many. 23:17:47 -!- Sgeo has joined. 23:17:54 Since there are many occurrences of x and one of y. 23:18:11 hmm, then one is not substituted for y 23:18:23 let me check that, int-e 23:18:28 tromp: laver (\f\x. f (f (f x))) (\f\x. f (f (f x))) (\f\x. f x) 23:19:05 Then do you order the lambdas in let-in to put the ones that are likely to be reduced first? 23:19:20 tromp: (that should be 2) 23:19:53 oh, I'm testing with argument order mx, a, b. 23:21:29 aha 23:22:06 we do not re-order the lambdas from a let 23:25:07 (the reason that a = 2 works is because 2 |> _ is idempotent. 3 |> _ is not idempotent; 3 |> 1 is 2, but 3 |> (3 |> (3 |> 1)) is 0) 23:27:25 ah yes, i see the problem 23:29:34 now how do i revert back to the last good commit? 23:30:37 (git newbie here) 23:30:51 something like git checkout 796e4fe368bd82800f011cec49e7f201b2f1e49f laver.lam 23:31:28 (git diff --cached will show that this actually had an effect... git diff won't) 23:31:28 Or git revert. 23:32:01 ah, I've never used git revert with mre than one commit... 23:32:22 You can give it a range, it looks like. 23:33:43 anyway it's not nicely applicable here because one of the commits touches two files... one of which is now gone... 23:34:06 that's ok, i'll re-commit the older checkout 23:35:59 back to 215 bits 23:36:32 and revert would produce two commits ... which could then be smashed with rebase... the checkout was simpler :) 23:37:00 revert -n 23:37:39 thanks, that would do the trick 23:39:12 (there would still be an awkward conflict to resolve though) 23:40:07 but for teaching purposes, I agree that's what I should've suggested :P 23:40:16 Sure. 23:40:26 It's all fine. 23:40:47 git is TG 23:41:40 Transcendentally groovy. 23:42:47 -!- hppavilion[2] has joined. 23:46:44 transcendtal e groove e 23:48:36 tromp: Oh, but your let definitions are ordered. 23:52:00 yes, manually 23:52:40 so writing them in a different order might help optimization 23:53:37 hmm, wait. your example may not fit the let expansion pattern 23:54:29 in expanded let every name is available for reducing 23:57:25 feel free to upvote at http://codegolf.stackexchange.com/questions/79620/laver-table-computations-and-an-algorithm-that-is-not-known-to-terminate-in-zfc :) 23:58:26 Is there a traditional variant on glob that's suitable for configuring /output/ in substitutions? Like, a glob4s/// of some sort 23:58:54 traditional globs are pretty limited