Home liberachat/#haskell: Logs Calendar

Logs on 2023-06-14 (liberachat/#haskell)

00:00:25 <geekosaur> and I still think you want Double instead of Float; unless you have a specific reason for reduced precision, you don't want Float
00:00:40 <chromoblob> so data TokenContent = SingleChar TokenSingleChar | TwoChars TokenTwoChars | Identifier String | String String | Number Float | Keyword Keyword | EOF
00:00:59 <chromoblob> data Keyword = AND | CLASS | ... -- all keywords
00:01:13 <chromoblob> data TokenSingleChar = LEFT_PAREN | ... -- all single-char tokens
00:01:14 Axman6 wants a tattoo with an anchor, that says "Never (IEEE-754) Float"
00:01:14 <chromoblob> and so on
00:01:32 <Axman6> Damn, that's the best idea for a tattoo I've ever had
00:01:53 <geekosaur> I still want my "human fuzzer" tshirt…
00:02:20 × mauke quits (~mauke@user/mauke) (Ping timeout: 260 seconds)
00:02:21 mauke_ is now known as mauke
00:05:05 <jackdk> Axman6: make it two crossed anchors and don't mention the IEEE stuff and you'll have a QFPL-tier inside joke
00:09:07 <ijqq_> So I am a bit confused, if I do this http://sprunge.us/94YvNH I am able to write Token 3 (StringLiteral "hi") but not Token 3 LEFT_PAREN, how come? And if I change it to be Symbol Symbol as you said chromoblob, then it works fine?
00:11:12 <jackdk> Type constructors and data constructors live in separate namespaces. Your snippet defines a data constructor called `Symbol` which takes no arguments, and a *completely unrelated type* called `Symbol` which has a bunch of constructors.
00:11:20 <jackdk> Also, are you doing Lox in Haskell?
00:11:41 <ijqq_> Ah okay, thank you, I think i just about understood that now
00:11:57 <ijqq_> Yes, I want to create my own programming language so I thought to do this
00:12:02 <ijqq_> And I wanted to learn haskell too.
00:12:13 <jackdk> Yeah, I worked through the C half of the book last month. It was really fun.
00:12:29 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
00:12:31 <ijqq_> Cool! it looks really intersting
00:12:40 <ijqq_> can't wait to hopefully get to the later parts after this
00:13:17 <jackdk> Punning the type/constructor names like this is a common Haskell idiom (hence the suggestion to write `Symbol Symbol`), but it does trip newbies up a lot. Some introductory material avoids this by sticking `Mk` in front of all the constructor names in its early examples, and defers the punning to later.
00:14:21 <ijqq_> ah okay. Yes so far i have been having some confusion between what and where the constructors and types go
00:14:33 delYsid parts (~user@84-115-138-74.cable.dynamic.surfer.at) (ERC 5.6-git (IRC client for GNU Emacs 30.0.50))
00:16:36 × bramhaag quits (~bramhaag@134.195.121.39) (Server closed connection)
00:16:49 bramhaag joins (~bramhaag@134.195.121.39)
00:18:46 <chromoblob> ijqq_: Token and TokenContent are separate types. to create a Token, first you create a TokenContent, and then put it into the Token constructor. any constructor of Symbol can strictly go only to places which expect values of type Symbol. so you must first "wrap" the LEFT_PAREN into Symbol, and only then give that to Token constructor
00:20:03 <chromoblob> also i think EOF isn't a keyword, it's a marker of end of file
00:20:33 <chromoblob> also you might not need it at all
00:22:53 <chromoblob> so, to rehash, LEFT_PAREN is of type Symbol, Symbol LEFT_PAREN is of type TokenContent, and Token 3 (Symbol LEFT_PAREN) is of type Token. "Token 3 LEFT_PAREN" is ill-typed since second field must be of type TokenContent, but bare LEFT_PAREN is of type Symbol
00:23:42 × emergence quits (thelounge@2607:5300:60:5910:dcad:beff:feef:5bc) (Remote host closed the connection)
00:24:15 emergence joins (thelounge@2607:5300:60:5910:dcad:beff:feef:5bc)
00:25:00 × ijqq quits (uid603979@id-603979.helmsley.irccloud.com) (Ping timeout: 240 seconds)
00:25:00 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 240 seconds)
00:25:00 ijqq_ is now known as ijqq
00:25:50 ijqq_ joins (uid603979@id-603979.helmsley.irccloud.com)
00:26:03 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:26:14 <jackdk> chromoblob: yeah I think I'd move EOF from Keyword into TokenContent
00:26:27 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
00:26:30 × talismanick quits (~user@2601:204:ef01:8ca0::a680) (Ping timeout: 240 seconds)
00:27:04 talismanick joins (~user@2601:204:ef01:8ca0::a680)
00:29:03 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
00:29:22 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:32:04 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
00:34:39 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
00:35:19 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:35:19 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:35:19 wroathe joins (~wroathe@user/wroathe)
00:36:05 × wroathe quits (~wroathe@user/wroathe) (Client Quit)
00:36:23 wroathe joins (~wroathe@user/wroathe)
00:37:25 <arrowhead> Rembane: hey
00:37:40 <arrowhead> Rembane: thank you for your help, I saw the file you made for me, it is being very helpful to me
00:37:43 <arrowhead> let me show you
00:38:44 <arrowhead> Rembane: https://paste.tomsmeding.com/QSwD10FM -- commented are the mistakes I was making, which you helped me correct with your code that you sent to me after I quit the chat.
00:39:18 <arrowhead> I had not understood that the "box" of the "IORef" is "inside the IORef" and needs to be <- or >>=. I thought the IORef itself was the box.
00:39:27 <arrowhead> That was my confusion and thank you very much for you help.
00:39:39 <dibblego> box metaphors regularly cause confusion
00:41:21 <arrowhead> in this context, it is a programming language that is being coded, so I am really using the IORef as a boxed value
00:41:43 <dibblego> expect more confusion :)
00:42:44 <arrowhead> dibblego: :)
00:43:08 <arrowhead> dibblego: I am giving Haskell a good go as an imperative language, porting a toy language I made
00:43:43 <arrowhead> I want to get fluent in the IO mutable functions
00:43:50 <dibblego> I would not expect IORef to appear in that task
00:44:10 <arrowhead> Why not?
00:44:46 <dibblego> I have written language compilers in Haskell and I have not used IORef for any of it, nor can I imagine why I would.
00:45:28 <geekosaur> compilers, or interpreters?
00:45:42 <arrowhead> dibblego: how would you model a syntax such that one word creates a box that then gets filled by a value that comes much, much after that word was processed?
00:46:15 <dibblego> both
00:46:29 <geekosaur> you're not doing it, you're generating code that will do it at runtime
00:46:42 <ijqq> thank you chromo
00:47:29 <arrowhead> I think for you to model mutable variables you would need IORef, if not an equivalent such as STRef interpreted by IO
00:47:32 <ijqq> yep, the author just said that they have the EOF in there to make the parsing later on easier, i'm not sure if i will end up needing it but i thought to keep it for now
00:47:58 <arrowhead> dibblego: are you sure you can model a mutable variable without using IORef?
00:48:17 <dibblego> No I am not sure. But where did "mutable variable" come into this?
00:49:10 <arrowhead> The programming language I am modeling in Haskell has mutable variables. You said "I have written language compilers in Haskell and I have not used IORef for any of it, nor can I imagine why I would."
00:49:31 <arrowhead> Any language that has mutable variables I believe would have forced you to use IORef or equivalent.
00:49:54 <arrowhead> So I mentioned it to push back against that assertion that so many languages can be written without IORef.
00:50:01 <geekosaur> only if you're interpreting it
00:50:03 <pyrex> <geekosaur> compilers, or interpreters?
00:50:28 <geekosaur> if you are compiling then you are generating code. the generated code needs to deal with mutable variables; code generation itself does not
00:50:36 <arrowhead> Right, interpreters. For compilers, everything can disappear with CPS.
00:50:51 <arrowhead> geekosaur: of course.
00:51:04 <pyrex> you don't even need CPS! nothing stops you from outputting a mov instruction
00:51:21 <arrowhead> CPS is more general and it models everything. It is the universal abstraction.
00:51:35 <pyrex> can you show me how to balance my checkbooks with CPS?
00:51:58 <arrowhead> If by that you mean "can you show me how to do mutation with CPS" Oleg Kiselyov has shows that.
00:52:10 <arrowhead> shwon*
00:52:35 <pyrex> no, I'm using a facetious example to assert that CPS doesn't model "everything" because there are tasks that have nothing to do with tracking the state of a variable, resuming a task, or so on
00:53:00 <pyrex> i am sure CPS also will not help me figure out the convex hull of a set of points
00:53:08 <arrowhead> Hmm, I was referencing its mathematical role.
00:53:37 <arrowhead> pyrex: it can give you all instructions by which to do that
00:53:42 <arrowhead> that's the point.
00:54:36 <pyrex> i am tempted to say "CPS is a pretty neat trick that lets you avoid some problems in figuring out aliveness, makes inlining easier, gets you closer to supporting coroutines, and lets you eliminate the stack (which is useful for concurrent programs)"
00:55:02 <pyrex> i think that is useful but everything i described is a concern from the codegen stage of a particular kind of compiler
00:55:31 <arrowhead> Right, the fun stage
00:55:48 <arrowhead> It also allows you not to collect garbage
00:55:51 <arrowhead> it's miraculous
00:56:02 <pyrex> it does? that claim is surprising to me
00:56:02 <arrowhead> cheap call/cc, costless function calls
00:56:11 <arrowhead> pyrex: see Cheney on the MTA
00:57:07 <arrowhead> pyrex: just fill up the stack then jump from its top to the bottom while keeping what's alive in a one-go stop-the-world sweep
00:57:18 <arrowhead> gets amortized pretty nicely across almost-never-happening
00:57:27 <chromoblob> oh no...
00:58:31 <chromoblob> ... that IS gc.
00:58:32 <jackdk> "The programming language I am modeling in Haskell has mutable variables." <- I would still probably write the interpreter as a function `Instruction -> State -> State` or whatever, because that will be much easier to test than an IORef-based solution
00:59:00 × foul_owl quits (~kerry@71.212.137.212) (Quit: WeeChat 2.3)
00:59:20 <arrowhead> jackdk: I would love to do it that way! But I don't know how to change a field inside a structure inside an array inside the God structure of the program... without copying a bunch of stuff
00:59:51 <pyrex> yeah, after reading the paper i disagree that cheney's design is avoiding gc
00:59:52 <arrowhead> If someone could teach me... oh and there's a "inside a hashtable" in the middle of that path along the way
01:00:03 × tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 255 seconds)
01:00:10 <arrowhead> pyrex: okay, it's one GC per full stack
01:00:20 <arrowhead> a stack almost never fills so... almost never.
01:00:44 <pyrex> i would say it's just mark and sweep, but the state of a function is an object, and because you never reenter a function, you don't have to think about the possibility that your environment was fouled on reentry
01:00:47 <jackdk> arrowhead: do you mean "copying" as in "I'm duplicating values everywhere" (which is probably not as bad as you think because of structure sharing" or as in "I'm writing a tonne of boilerplate in these update functions and it's driving me batty?"
01:00:50 <chromoblob> arrowhead: you are going to allow your programs eat up up to a whole stack?
01:00:56 foul_owl joins (~kerry@71.212.137.212)
01:01:13 <pyrex> you just have to think about the possibility that you ran out of space on, well, entry.
01:01:17 <arrowhead> jackdk: I know the former is highly optimized; my problem is the latter. I get all confused.
01:01:33 <arrowhead> chromoblob: yes, everyone writing Chicken Scheme does for instance.
01:01:42 <arrowhead> chromoblob: it's totally okay.
01:02:01 tessier joins (~treed@ip72-197-145-89.sd.sd.cox.net)
01:02:20 <arrowhead> pyrex: that's a very theoretical concern
01:02:45 <pyrex> no it's not, it's explicitly required in baker's paper: https://web.archive.org/web/20200223051632/http://home.pipeline.com/~hbaker1/CheneyMTA.html
01:02:48 <pyrex> it's a central feature of the scheme.
01:03:03 <pyrex> to be clear, i think that's fine, i just also think it's essentially similar to what other ways of implementing GC do.
01:03:25 <arrowhead> jackdk: can you help me figure out how to change, say, a list element inside a structure field for a struct (data) I found through a hashtable ?
01:04:07 <arrowhead> pyrex: how is it similar when other GCs are sort of "live" and come on and off whereas Cheney waits until the stack is full?
01:04:08 <chromoblob> arrowhead: the sawtooth graph doesn't look very efficient to me...
01:04:30 <pyrex> i mean, i guess it's different in that the system degrades way worse if you attempt to make it concurrent?
01:04:52 <arrowhead> chromoblob: I have coded the exact same full-text search engine in C and Chicken Scheme and the penalty was 10x. Racket is 60 times slower.
01:05:07 <pyrex> it's normal for a GC to be triggered by "oops, your program did a thing that couldn't be done in the current GC state -- we'll now run the GC before resuming your program"
01:05:26 <pyrex> to be clear, i'm explicitly not saying this is a bad way to implement a GC
01:05:28 <arrowhead> pyrex: that is above my paygrade. I am very suspicious of things that need to be solved concurrently.
01:05:31 <pyrex> it just strikes me as a pretty ordinary way to implement a GC
01:05:32 zmt00 joins (~zmt00@user/zmt00)
01:05:47 <arrowhead> pyrex: then why do you think it's seen as radically different from all others?
01:05:56 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds)
01:05:56 <arrowhead> pyrex: are you perhaps a contrarian? ;)
01:06:21 × bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 255 seconds)
01:06:32 <pyrex> i am not sure I grant the claim that it is radically different from all others!
01:06:37 <pyrex> i am not sure i am a contrarian either!!
01:06:42 hays joins (rootvegeta@fsf/member/hays)
01:06:49 <arrowhead> pyrex: that is very interesting to me, I appreciate your point of view
01:06:49 <pyrex> to be clear: I first heard about this scheme because you talked about it
01:06:54 <arrowhead> I know very little about these things
01:06:59 <arrowhead> still!
01:07:02 <pyrex> I then read the paper and concluded "well, this looks cool, I'm not sure this is that weird!"
01:07:17 <chromoblob> maybe Chicken Scheme should remember previous size of heap after full GC and have a small "trigger" and do GC when stack pointer exceeds last size plus trigger
01:07:19 <pyrex> keep in mind I could be an uncareful reader who fails to realize how weird it actually is!!!
01:07:26 <arrowhead> pyrex: chromoblob thought it was weird by asking "are you going to allow your program to fill up the stack"
01:07:41 <arrowhead> pyrex: and I could be a terrible explainer
01:07:50 <pyrex> oh i think chromoblob's being weird, that's a pretty standard thing for generational GCs, w/ the exception that it's often not the actual C-level stack
01:07:56 <jackdk> arrowhead: the high-powered answer is "lens", but that's probably a big detour on your learning journey that's probably not worth taking right now. An idiom I find very helpful (if I'm not lensing, e.g., because I'm writing Elm) is to write `updateFoo :: (Foo -> Foo) -> Bar -> Bar` functions because they compose neatly.
01:08:14 <arrowhead> chromoblob: that would be almost the same as another GC algorithms whose name escapes me now... meaning it would be a different thing
01:08:18 <pyrex> it is likely chromoblob knows more than me though -- i have implemented toy languages sometimes but i would opine that my toys were pretty bad =(
01:09:24 <ijqq> I have a question, now i've updated my data definitions: is the way i previously wrote to tokenise fine http://sprunge.us/oVK7q5 (obivously i have to make many changes to what ive shown, it's just an example), or is it better to use applicative and stuff like that?
01:09:35 <chromoblob> to be fair, i don't like most GCs...
01:09:50 zer0bitz_ joins (~zer0bitz@user/zer0bitz)
01:10:08 <ijqq> i feel what i wrote is a very direct conversion from java, maybe it's not very "haskelly"?
01:10:11 johnw_ joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
01:10:57 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:11:00 pyrex_ joins (~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c)
01:11:05 <chromoblob> anyways, filling up the stack, if stack is of moderate size or larger, is quite disturbing for me
01:11:14 × pyrex_ quits (~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c) (Client Quit)
01:11:22 cheater_ joins (~Username@user/cheater)
01:11:24 Sgeo_ joins (~Sgeo@user/sgeo)
01:11:25 × rubin55 quits (sid175221@hampstead.irccloud.com) (Ping timeout: 255 seconds)
01:11:25 × Vajb quits (~Vajb@2001:999:484:a37d:e618:9886:4843:f5d8) (Ping timeout: 255 seconds)
01:11:25 tzh_ joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
01:11:35 pyrex_ joins (~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c)
01:11:52 × Angelz quits (Angelz@angelz.oddprotocol.org) (Ping timeout: 255 seconds)
01:11:52 × acro quits (~acro@user/acro) (Ping timeout: 255 seconds)
01:11:52 × anpad quits (~pandeyan@user/anpad) (Ping timeout: 255 seconds)
01:11:52 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:c52d:211a:dc73:3e4a) (Ping timeout: 255 seconds)
01:12:06 mauke_ joins (~mauke@user/mauke)
01:12:15 talisman` joins (~user@2601:204:ef01:8ca0::a680)
01:12:19 × edmundnoble quits (sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 255 seconds)
01:12:19 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 255 seconds)
01:12:20 img_ joins (~img@user/img)
01:12:22 srk_ joins (~sorki@user/srk)
01:12:28 taupiqueur1 joins (~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net)
01:12:29 glguy_ joins (~glguy@libera/staff-emeritus/glguy)
01:12:31 lottaquestions_ joins (~nick@2607:fa49:503f:6d00:76c6:8180:36e3:46f2)
01:12:36 × pyrex quits (~pyrex@user/pyrex) (Killed (NickServ (GHOST command used by pyrex_!~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c)))
01:12:44 × pyrex_ quits (~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c) (Client Quit)
01:12:46 × remsen quits (ianremsen@tilde.team) (Ping timeout: 255 seconds)
01:12:46 × lightandlight quits (sid135476@id-135476.helmsley.irccloud.com) (Ping timeout: 255 seconds)
01:12:46 × dagit quits (~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (Ping timeout: 255 seconds)
01:12:46 × cawfee quits (~root@2406:3003:2077:2758::babe) (Ping timeout: 255 seconds)
01:12:46 × PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 255 seconds)
01:12:46 × raym quits (~ray@user/raym) (Ping timeout: 255 seconds)
01:12:46 × glguy quits (~glguy@libera/staff-emeritus/glguy) (Ping timeout: 255 seconds)
01:12:46 × bcoppens quits (~bartcopp@vpn2.bartcoppens.be) (Ping timeout: 255 seconds)
01:12:58 jargon_ joins (~jargon@184.101.75.235)
01:12:59 pyrex joins (~pyrex@user/pyrex)
01:13:07 biberu\ joins (~biberu@user/biberu)
01:13:13 phma_ joins (~phma@host-67-44-208-30.hnremote.net)
01:13:13 × heartburn quits (~gass@2a00:d880:3:1::b1e4:b241) (Ping timeout: 255 seconds)
01:13:13 × heath1 quits (~heath@user/heath) (Ping timeout: 255 seconds)
01:13:13 × flukiluke quits (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Ping timeout: 255 seconds)
01:13:13 × drdo quits (~drdo@bl8-153-185.dsl.telepac.pt) (Ping timeout: 255 seconds)
01:13:13 × lottaquestions quits (~nick@2607:fa49:503f:6d00:9d95:486a:e095:686c) (Ping timeout: 255 seconds)
01:13:13 × srk quits (~sorki@user/srk) (Ping timeout: 255 seconds)
01:13:13 × mikko quits (~mikko@user/mikko) (Ping timeout: 255 seconds)
01:13:13 × tom_ quits (~tom@2a00:23c8:970c:4801:d59:645f:19cf:5a58) (Ping timeout: 255 seconds)
01:13:13 × Nosrep quits (~Nosrep@user/nosrep) (Ping timeout: 255 seconds)
01:13:13 × haritz quits (~hrtz@user/haritz) (Ping timeout: 255 seconds)
01:13:13 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 255 seconds)
01:13:13 × img quits (~img@user/img) (Ping timeout: 255 seconds)
01:13:13 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds)
01:13:13 × sympt quits (~sympt@user/sympt) (Ping timeout: 255 seconds)
01:13:13 × piele quits (~piele@tbonesteak.creativeserver.net) (Ping timeout: 255 seconds)
01:13:13 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 255 seconds)
01:13:13 × kosmikus quits (~kosmikus@nullzig.kosmikus.org) (Ping timeout: 255 seconds)
01:13:23 anpad joins (~pandeyan@user/anpad)
01:13:29 pyrex is now known as pyrex_
01:13:33 pyrex_ is now known as pyrex
01:13:40 × hexology quits (~hexology@user/hexology) (Ping timeout: 255 seconds)
01:13:40 arrowhea_ joins (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
01:13:40 ijqq__ joins (uid603979@id-603979.helmsley.irccloud.com)
01:14:40 × b0o quits (0e4a0bf4c9@2604:bf00:561:2000::1bf) (Ping timeout: 260 seconds)
01:14:41 × theesm quits (2cbdf4b38a@2604:bf00:561:2000::11c8) (Ping timeout: 260 seconds)
01:14:41 × JoelMcCracken quits (5ea8252fbb@2604:bf00:561:2000::10e3) (Ping timeout: 260 seconds)
01:14:41 × sm2n quits (ae95cb1267@user/sm2n) (Ping timeout: 260 seconds)
01:14:41 × JSharp quits (sid4580@2a03:5180:f:2::11e4) (Ping timeout: 260 seconds)
01:14:41 × Pent quits (sid313808@2a03:5180:f:2::4:c9d0) (Ping timeout: 260 seconds)
01:14:41 × fvr quits (ef3e56ca8b@2604:bf00:561:2000::3c4) (Ping timeout: 260 seconds)
01:14:41 × evanrelf quits (3addc196af@2604:bf00:561:2000::f0) (Ping timeout: 260 seconds)
01:14:41 × landonf quits (landonf@2600:3c03::f03c:91ff:feae:da1e) (Ping timeout: 260 seconds)
01:14:41 × bsima1 quits (9d7e39c8ad@2604:bf00:561:2000::dd) (Ping timeout: 260 seconds)
01:14:41 × lukec quits (9dfd4d094e@2604:bf00:561:2000::10e) (Ping timeout: 260 seconds)
01:14:41 × filwisher quits (2e6936c793@2604:bf00:561:2000::170) (Ping timeout: 260 seconds)
01:15:02 × phma_ quits (~phma@host-67-44-208-30.hnremote.net) (Read error: Connection reset by peer)
01:15:15 × jleightcap quits (7bc4014b62@user/jleightcap) (Ping timeout: 260 seconds)
01:15:15 × n1essa quits (3d621153a5@2604:bf00:561:2000::df7) (Ping timeout: 260 seconds)
01:15:16 × retropikzel quits (9d1a4f9f46@2604:bf00:561:2000::ce) (Ping timeout: 260 seconds)
01:15:16 × ymherklotz quits (cb2c9cfbdd@2604:bf00:561:2000::29a) (Ping timeout: 260 seconds)
01:15:16 × sus quits (1b7af6299f@user/zeromomentum) (Ping timeout: 260 seconds)
01:15:16 × whereiseveryone quits (206ba86c98@2604:bf00:561:2000::2e4) (Ping timeout: 260 seconds)
01:15:16 × ggb quits (a62ffbaf4f@2604:bf00:561:2000::3ac) (Ping timeout: 260 seconds)
01:15:16 × Yumemi quits (~Yumemi@chamoin.net) (Ping timeout: 260 seconds)
01:15:50 × chaitlatte0 quits (ea29c0bb16@user/chaitlatte0) (Ping timeout: 260 seconds)
01:15:51 × delyan quits (sid523379@2a03:5180:f:4::7:fc73) (Ping timeout: 260 seconds)
01:15:51 × probie quits (cc0b34050a@user/probie) (Ping timeout: 260 seconds)
01:15:51 × henrytill quits (e0180937c3@2604:bf00:561:2000::e8c) (Ping timeout: 260 seconds)
01:15:51 × shreyasminocha quits (51fdc93eda@user/shreyasminocha) (Ping timeout: 260 seconds)
01:15:51 × MonsoonSecrecy quits (f78c86e960@2604:bf00:561:2000::f99) (Ping timeout: 260 seconds)
01:15:51 × hexeme quits (~hexeme@user/hexeme) (Ping timeout: 260 seconds)
01:16:25 × jkoshy quits (99b9359beb@user/jkoshy) (Ping timeout: 260 seconds)
01:16:25 × dtman34 quits (~dtman34@2601:447:d000:93c9:f1cc:f7a5:325c:7994) (Ping timeout: 260 seconds)
01:16:25 × jakzale quits (6291399afa@user/jakzale) (Ping timeout: 260 seconds)
01:16:25 × samhh_ quits (7569f027cf@2604:bf00:561:2000::e4) (Ping timeout: 260 seconds)
01:16:25 × fluffyballoon quits (45ce440a48@2604:bf00:561:2000::e2) (Ping timeout: 260 seconds)
01:16:26 × arcadewise quits (52968ed80d@2604:bf00:561:2000::3df) (Ping timeout: 260 seconds)
01:16:26 × Ankhers quits (a197a332e9@2604:bf00:561:2000::2a2) (Ping timeout: 260 seconds)
01:16:26 × cln_ quits (cln@wtf.cx) (Ping timeout: 260 seconds)
01:16:26 × APic quits (apic@apic.name) (Ping timeout: 260 seconds)
01:16:26 × megaTherion quits (~therion@unix.io) (Ping timeout: 260 seconds)
01:16:26 × xstill_ quits (xstill@fimu/xstill) (Ping timeout: 260 seconds)
01:16:26 × Clint quits (~Clint@user/clint) (Ping timeout: 260 seconds)
01:16:26 × ames quits (~amelia@offtopia/offtopian/amelia) (Ping timeout: 260 seconds)
01:16:26 × adamCS quits (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (Ping timeout: 260 seconds)
01:16:26 × laman2 quits (~laman@rego.ai) (Ping timeout: 260 seconds)
01:16:26 × witcher quits (~witcher@wiredspace.de) (Ping timeout: 260 seconds)
01:16:26 × acertain quits (sid470584@id-470584.hampstead.irccloud.com) (Ping timeout: 260 seconds)
01:16:26 × farn__ quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 260 seconds)
01:16:26 × manwithluck quits (manwithluc@hoeven.dossingday.ml) (Ping timeout: 260 seconds)
01:16:26 × [_________] quits (~oos95GWG@user/oos95GWG) (Ping timeout: 260 seconds)
01:17:00 × tcard_ quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 260 seconds)
01:17:01 × lbseale quits (~quassel@user/ep1ctetus) (Ping timeout: 260 seconds)
01:17:01 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 260 seconds)
01:17:01 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 260 seconds)
01:17:01 × hpc quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 260 seconds)
01:17:01 × phma quits (phma@2001:5b0:2172:dde8:47f2:e98f:fb8c:320e) (Ping timeout: 260 seconds)
01:17:01 × polux quits (~polux@51-15-169-172.rev.poneytelecom.eu) (Ping timeout: 260 seconds)
01:17:01 × lilata quits (~lilata@137.184.4.49) (Ping timeout: 260 seconds)
01:17:01 × turlando quits (~turlando@user/turlando) (Ping timeout: 260 seconds)
01:17:59 dagi82659 joins (~dagit@2001:558:6025:38:71c6:9d58:7252:8976)
01:17:59 AlexNoo_ joins (~AlexNoo@178.34.163.88)
01:18:00 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 255 seconds)
01:18:00 × RMSBach quits (~guygastin@137.184.131.156) (Ping timeout: 255 seconds)
01:18:00 × jackdk quits (sid373013@cssa/jackdk) (Ping timeout: 255 seconds)
01:18:00 haritzondo joins (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
01:18:00 ridcully joins (~ridcully@p57b52f2c.dip0.t-ipconnect.de)
01:18:01 × b20n quits (sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
01:18:01 × ijqq_ quits (uid603979@id-603979.helmsley.irccloud.com) (Ping timeout: 255 seconds)
01:18:01 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 255 seconds)
01:18:01 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
01:18:01 × arrowhead quits (~arrowhead@cpe-74-66-76-151.nyc.res.rr.com) (Ping timeout: 255 seconds)
01:18:01 × taupiqueur quits (~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net) (Ping timeout: 255 seconds)
01:18:01 × ridcully_ quits (~ridcully@p57b52f2c.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
01:18:01 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
01:18:01 × m1dnight quits (~christoph@78-22-4-67.access.telenet.be) (Ping timeout: 255 seconds)
01:18:01 red-snai- joins (~snail@static.151.210.203.116.clients.your-server.de)
01:18:02 Benzi-Junior joins (~BenziJuni@88-149-64-112.du.xdsl.is)
01:18:02 × talismanick quits (~user@2601:204:ef01:8ca0::a680) (Ping timeout: 255 seconds)
01:18:02 × mauke quits (~mauke@user/mauke) (Ping timeout: 255 seconds)
01:18:02 × acidjnk quits (~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
01:18:02 × red-snail1 quits (~snail@static.151.210.203.116.clients.your-server.de) (Ping timeout: 255 seconds)
01:18:02 × AlexNoo quits (~AlexNoo@178.34.163.88) (Ping timeout: 255 seconds)
01:18:02 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 255 seconds)
01:18:02 × energizer quits (~energizer@user/energizer) (Ping timeout: 255 seconds)
01:18:02 × Adran quits (~adran@botters/adran) (Ping timeout: 255 seconds)
01:18:02 × robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
01:18:02 × tritlo quits (sid58727@user/tritlo) (Ping timeout: 255 seconds)
01:18:02 × mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Ping timeout: 255 seconds)
01:18:02 bcoppens_ joins (~bartcopp@vpn2.bartcoppens.be)
01:18:02 remsen- joins (ianremsen@tilde.team)
01:18:02 kosmikus_ joins (~kosmikus@nullzig.kosmikus.org)
01:18:02 Errdonald__ joins (~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8)
01:18:02 edmundnoble_ joins (sid229620@id-229620.helmsley.irccloud.com)
01:18:02 b20n joins (sid115913@id-115913.uxbridge.irccloud.com)
01:18:02 megaTherion_ joins (~therion@unix.io)
01:18:02 SrPx_ joins (sid108780@id-108780.uxbridge.irccloud.com)
01:18:02 ijqq_ joins (uid603979@id-603979.helmsley.irccloud.com)
01:18:03 cawfee_ joins (~root@2406:3003:2077:2758::babe)
01:18:13 × AlexNoo_ quits (~AlexNoo@178.34.163.88) (Read error: Connection reset by peer)
01:18:13 × bcoppens_ quits (~bartcopp@vpn2.bartcoppens.be) (Read error: Connection reset by peer)
01:18:13 × kosmikus_ quits (~kosmikus@nullzig.kosmikus.org) (Read error: Connection reset by peer)
01:18:34 laman3 joins (~laman@rego.ai)
01:18:39 phma_ joins (phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae)
01:18:41 × cawfee_ quits (~root@2406:3003:2077:2758::babe) (Read error: Connection reset by peer)
01:19:14 xff0x_ joins (~xff0x@ai098135.d.east.v6connect.net)
01:19:24 bcoppens_ joins (~bartcopp@vpn2.bartcoppens.be)
01:19:34 user2 joins (~user@103.206.114.86)
01:19:38 wroathe_ joins (~wroathe@207-153-38-140.fttp.usinternet.com)
01:19:53 acidjnk_new joins (~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de)
01:19:54 kosmikus_ joins (~kosmikus@nullzig.kosmikus.org)
01:19:54 dagi75224 joins (~dagit@2001:558:6025:38:71c6:9d58:7252:8976)
01:20:02 m1dnight_ joins (~christoph@78-22-4-67.access.telenet.be)
01:20:08 acro_ joins (~acro@user/acro)
01:20:11 xstill_0 joins (xstill@fimu/xstill)
01:20:11 × wroathe quits (~wroathe@user/wroathe) (Killed (NickServ (GHOST command used by wroathe_!~wroathe@207-153-38-140.fttp.usinternet.com)))
01:20:14 Cadey joins (~cadey@tailscale/xe)
01:20:14 tom__ joins (~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
01:20:14 080AAA5IJ joins (~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de)
01:20:15 × elkcl quits (~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru) (Ping timeout: 240 seconds)
01:20:15 × econo quits (uid147250@user/econo) (Ping timeout: 240 seconds)
01:20:15 wroathe_ is now known as wroathe
01:20:18 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 240 seconds)
01:20:18 × Alex_test quits (~al_test@178.34.163.88) (Ping timeout: 240 seconds)
01:20:18 × AlexZenon quits (~alzenon@178.34.163.88) (Ping timeout: 240 seconds)
01:20:19 Alex_test joins (~al_test@178.34.163.88)
01:20:19 AlexZenon joins (~alzenon@178.34.163.88)
01:20:19 × ddellacosta quits (~ddellacos@146.70.165.139) (Ping timeout: 240 seconds)
01:20:20 rubin55_ joins (sid175221@id-175221.hampstead.irccloud.com)
01:20:20 × foul_owl quits (~kerry@71.212.137.212) (Ping timeout: 240 seconds)
01:20:20 × biberu quits (~biberu@user/biberu) (Ping timeout: 240 seconds)
01:20:20 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
01:20:20 × juri_ quits (~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 240 seconds)
01:20:20 × extor quits (~extor@ns3018124.ip-149-202-82.eu) (Ping timeout: 240 seconds)
01:20:20 piele_ joins (~piele@tbonesteak.creativeserver.net)
01:20:20 × B-J quits (~BenziJuni@dsl-149-64-112.hive.is) (Ping timeout: 240 seconds)
01:20:20 × jargon quits (~jargon@184.101.75.235) (Ping timeout: 240 seconds)
01:20:20 × Luj quits (~Luj@2a01:e0a:5f9:9681:f71f:fbb2:cbdf:4da0) (Ping timeout: 240 seconds)
01:20:20 × jero98772 quits (~jero98772@2800:484:1d7f:5d36::2) (Ping timeout: 240 seconds)
01:20:20 × glider quits (~glider@user/glider) (Ping timeout: 240 seconds)
01:20:20 × ijqq quits (uid603979@id-603979.helmsley.irccloud.com) (Ping timeout: 240 seconds)
01:20:20 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
01:20:20 × EsoAlgo81 quits (~EsoAlgo@129.146.136.145) (Ping timeout: 240 seconds)
01:20:20 × kadobanana quits (~mud@user/kadoban) (Ping timeout: 240 seconds)
01:20:20 taupiqueur1 is now known as 042AAA2VT
01:20:20 taupiqueur1 joins (~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net)
01:20:20 raym_ joins (~ray@115.187.32.4)
01:20:20 chromobl1b joins (~user@37.113.180.121)
01:20:20 johnw- joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
01:20:20 PotatoGim_ joins (sid99505@id-99505.lymington.irccloud.com)
01:20:20 arrowhea_ is now known as 042AAA284
01:20:20 080AAA7GN joins (~christoph@78-22-4-67.access.telenet.be)
01:20:20 extor joins (~extor@ns3018124.ip-149-202-82.eu)
01:20:21 bramhaag9 joins (~bramhaag@134.195.121.39)
01:20:21 jinsl- joins (~jinsl@2408:8207:2558:8870:211:32ff:fec8:6aea)
01:20:21 EPic_ joins (apic@apic.name)
01:20:21 acertain_ joins (sid470584@id-470584.hampstead.irccloud.com)
01:20:21 Pent_ joins (sid313808@id-313808.lymington.irccloud.com)
01:20:21 cln joins (cln@wtf.cx)
01:20:21 robobub_ joins (uid248673@id-248673.uxbridge.irccloud.com)
01:20:21 hpc_ joins (~juzz@ip98-169-35-163.dc.dc.cox.net)
01:20:21 × 080AAA7GN quits (~christoph@78-22-4-67.access.telenet.be) (Write error: Connection reset by peer)
01:20:21 × bramhaag9 quits (~bramhaag@134.195.121.39) (Read error: Connection reset by peer)
01:20:21 bramhaag6 joins (~bramhaag@134.195.121.39)
01:20:21 jackdk_ joins (sid373013@id-373013.tinside.irccloud.com)
01:20:21 × chromobl1b quits (~user@37.113.180.121) (Read error: Connection reset by peer)
01:20:21 Errdonald joins (~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8)
01:20:21 chromobl1b joins (~user@37.113.180.121)
01:20:21 × johnw- quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Read error: Connection reset by peer)
01:20:21 × taupiqueur1 quits (~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net) (Read error: Connection reset by peer)
01:20:21 × robobub_ quits (uid248673@id-248673.uxbridge.irccloud.com) (Max SendQ exceeded)
01:20:23 tessier_ joins (~treed@ip72-197-145-89.sd.sd.cox.net)
01:20:24 taupiqueur2 joins (~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net)
01:20:25 xax__ joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
01:20:27 biberu- joins (~biberu@user/biberu)
01:20:31 × raym_ quits (~ray@115.187.32.4) (Changing host)
01:20:31 raym_ joins (~ray@user/raym)
01:20:31 tcard__ joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
01:20:31 pyrex_ joins (~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c)
01:20:31 × pyrex_ quits (~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c) (Client Quit)
01:20:32 acro_ is now known as acro
01:20:32 pavonia_ joins (~user@ip5f5bd7ad.dynamic.kabel-deutschland.de)
01:20:33 lightandlight joins (sid135476@id-135476.helmsley.irccloud.com)
01:20:33 heartburn joins (~gass@2a00:d880:3:1::b1e4:b241)
01:20:33 042AAA36V joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
01:20:34 × thegeekinside quits (~thegeekin@189.217.90.138) (Ping timeout: 240 seconds)
01:20:34 × pavonia quits (~user@user/siracusa) (Ping timeout: 240 seconds)
01:20:34 pavonia_ is now known as pavonia
01:20:35 shapr` joins (~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291)
01:20:36 tom_ joins (~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
01:20:36 × mei quits (~mei@user/mei) (Ping timeout: 240 seconds)
01:20:36 × xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 240 seconds)
01:20:36 × jinsl quits (~jinsl@123.120.169.188) (Ping timeout: 240 seconds)
01:20:36 tritlo_ joins (sid58727@id-58727.hampstead.irccloud.com)
01:20:36 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:20:36 img joins (~img@2405:6580:b1c0:2500:96c6:91ff:fea5:bc11)
01:20:37 × img_ quits (~img@user/img) (Ping timeout: 240 seconds)
01:20:37 × bramhaag quits (~bramhaag@134.195.121.39) (Ping timeout: 240 seconds)
01:20:37 × ft quits (~ft@p508dbdef.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
01:20:37 × son0p quits (~ff@181.136.122.143) (Ping timeout: 240 seconds)
01:20:37 × shapr quits (~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291) (Ping timeout: 240 seconds)
01:20:37 × chromoblob quits (~user@37.113.180.121) (Ping timeout: 240 seconds)
01:20:38 bramhaag6 is now known as bramhaag
01:20:38 delyan_ joins (sid523379@id-523379.hampstead.irccloud.com)
01:20:38 × ijqq__ quits (uid603979@id-603979.helmsley.irccloud.com) (Ping timeout: 240 seconds)
01:20:38 × 042AAA284 quits (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Ping timeout: 240 seconds)
01:20:39 × anpad quits (~pandeyan@user/anpad) (Ping timeout: 240 seconds)
01:20:39 × biberu\ quits (~biberu@user/biberu) (Ping timeout: 240 seconds)
01:20:39 × pyrex quits (~pyrex@user/pyrex) (Ping timeout: 240 seconds)
01:20:39 × jargon_ quits (~jargon@184.101.75.235) (Ping timeout: 240 seconds)
01:20:39 × lottaquestions_ quits (~nick@2607:fa49:503f:6d00:76c6:8180:36e3:46f2) (Ping timeout: 240 seconds)
01:20:39 × 042AAA2VT quits (~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net) (Ping timeout: 240 seconds)
01:20:39 × srk_ quits (~sorki@user/srk) (Ping timeout: 240 seconds)
01:20:39 × talisman` quits (~user@2601:204:ef01:8ca0::a680) (Ping timeout: 240 seconds)
01:20:39 × mauke_ quits (~mauke@user/mauke) (Ping timeout: 240 seconds)
01:20:39 × tzh_ quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
01:20:39 × Sgeo_ quits (~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
01:20:39 × cheater_ quits (~Username@user/cheater) (Ping timeout: 240 seconds)
01:20:39 × johnw_ quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 240 seconds)
01:20:39 × hays quits (rootvegeta@fsf/member/hays) (Ping timeout: 240 seconds)
01:20:39 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds)
01:20:39 × tessier quits (~treed@ip72-197-145-89.sd.sd.cox.net) (Ping timeout: 240 seconds)
01:20:39 × emergence quits (thelounge@2607:5300:60:5910:dcad:beff:feef:5bc) (Ping timeout: 240 seconds)
01:20:39 × Errdonald_ quits (~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8) (Ping timeout: 240 seconds)
01:20:39 × wns quits (~user@103.206.114.90) (Ping timeout: 240 seconds)
01:20:39 × bionade24 quits (~bionade24@2a03:4000:33:45b::1) (Ping timeout: 240 seconds)
01:20:39 × anderson quits (~TheFunOne@user/anderson) (Ping timeout: 240 seconds)
01:20:39 × Xe quits (~cadey@tailscale/xe) (Ping timeout: 240 seconds)
01:20:39 × hisa38 quits (~hisa38@104-181-102-238.lightspeed.wepbfl.sbcglobal.net) (Ping timeout: 240 seconds)
01:20:39 farn joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
01:20:40 ggb_ joins (a62ffbaf4f@2604:bf00:561:2000::3ac)
01:20:40 filwisher_ joins (2e6936c793@2604:bf00:561:2000::170)
01:20:40 lukec_ joins (9dfd4d094e@2604:bf00:561:2000::10e)
01:20:40 bsima1_ joins (9d7e39c8ad@2604:bf00:561:2000::dd)
01:20:40 landonf_ joins (landonf@mac68k.info)
01:20:41 AlexNoo_ joins (~AlexNoo@178.34.163.88)
01:20:42 × AlexNoo_ quits (~AlexNoo@178.34.163.88) (Read error: Connection reset by peer)
01:20:43 AlexNoo_ joins (~AlexNoo@178.34.163.88)
01:20:43 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
01:20:44 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
01:20:44 ijqq___ joins (uid603979@id-603979.helmsley.irccloud.com)
01:20:45 × b20n quits (sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
01:20:45 × red-snai- quits (~snail@static.151.210.203.116.clients.your-server.de) (Ping timeout: 255 seconds)
01:20:45 cawfee_ joins (~root@2406:3003:2077:2758::babe)
01:20:48 elkcl joins (~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru)
01:20:52 × edmundnoble_ quits (sid229620@id-229620.helmsley.irccloud.com) (Read error: Connection reset by peer)
01:20:52 × ijqq_ quits (uid603979@id-603979.helmsley.irccloud.com) (Read error: Connection reset by peer)
01:20:53 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
01:20:53 wroathe joins (~wroathe@user/wroathe)
01:20:56 pavonia_ joins (~user@ip5f5bd7ad.dynamic.kabel-deutschland.de)
01:20:57 × megaTherion_ quits (~therion@unix.io) (Read error: Connection reset by peer)
01:20:57 × pavonia quits (~user@ip5f5bd7ad.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
01:21:00 ijqq_ joins (uid603979@id-603979.helmsley.irccloud.com)
01:21:00 megaTherion joins (~therion@unix.io)
01:21:01 mikko joins (~mikko@dsl-trebng22-58c1a8-185.dhcp.inet.fi)
01:21:06 haritz joins (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
01:21:08 × img quits (~img@2405:6580:b1c0:2500:96c6:91ff:fea5:bc11) (Changing host)
01:21:08 img joins (~img@user/img)
01:21:09 red-snail1 joins (~snail@static.151.210.203.116.clients.your-server.de)
01:21:10 jero98772 joins (~jero98772@2800:484:1d7f:5d36::2)
01:21:12 b20n joins (sid115913@id-115913.uxbridge.irccloud.com)
01:21:13 edmundnoble_ joins (sid229620@id-229620.helmsley.irccloud.com)
01:21:14 jackdk_ is now known as jackdk
01:21:15 shapr`` joins (~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291)
01:21:19 × lukec_ quits (9dfd4d094e@2604:bf00:561:2000::10e) (Read error: Connection reset by peer)
01:21:19 × filwisher_ quits (2e6936c793@2604:bf00:561:2000::170) (Read error: Connection reset by peer)
01:21:19 × bsima1_ quits (9d7e39c8ad@2604:bf00:561:2000::dd) (Read error: Connection reset by peer)
01:21:19 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
01:21:27 bsima1 joins (9d7e39c8ad@2604:bf00:561:2000::dd)
01:21:27 lukec joins (9dfd4d094e@2604:bf00:561:2000::10e)
01:21:27 filwisher joins (2e6936c793@2604:bf00:561:2000::170)
01:21:28 pavonia_ is now known as pavonia
01:21:29 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 240 seconds)
01:21:29 × tritlo_ quits (sid58727@id-58727.hampstead.irccloud.com) (Ping timeout: 240 seconds)
01:21:32 × jinsl- quits (~jinsl@2408:8207:2558:8870:211:32ff:fec8:6aea) (Ping timeout: 240 seconds)
01:21:34 × pavonia quits (~user@ip5f5bd7ad.dynamic.kabel-deutschland.de) (Changing host)
01:21:34 pavonia joins (~user@user/siracusa)
01:21:35 × ridcully quits (~ridcully@p57b52f2c.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
01:21:37 × lightandlight quits (sid135476@id-135476.helmsley.irccloud.com) (Read error: Connection reset by peer)
01:21:38 × mikko quits (~mikko@dsl-trebng22-58c1a8-185.dhcp.inet.fi) (Changing host)
01:21:39 mikko joins (~mikko@user/mikko)
01:21:39 × SrPx_ quits (sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
01:21:50 biberu- is now known as biberu
01:21:55 × jackdk quits (sid373013@id-373013.tinside.irccloud.com) (Changing host)
01:21:55 jackdk joins (sid373013@cssa/jackdk)
01:21:56 × rubin55_ quits (sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 240 seconds)
01:21:57 tritlo_ joins (sid58727@id-58727.hampstead.irccloud.com)
01:21:58 ridcully joins (~ridcully@p57b52f2c.dip0.t-ipconnect.de)
01:22:00 <Axman6> Oh dear...
01:22:00 lightandlight joins (sid135476@id-135476.helmsley.irccloud.com)
01:22:02 foul_owl joins (~kerry@71.212.137.212)
01:22:04 img_ joins (~img@2405:6580:b1c0:2500:96c6:91ff:fea5:bc11)
01:22:06 × Errdonald__ quits (~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8) (Ping timeout: 254 seconds)
01:22:06 × remsen- quits (ianremsen@tilde.team) (Ping timeout: 254 seconds)
01:22:06 × haritzondo quits (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Ping timeout: 254 seconds)
01:22:06 × dagi82659 quits (~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (Ping timeout: 254 seconds)
01:22:11 jinsl joins (~jinsl@2408:8207:2558:8870:211:32ff:fec8:6aea)
01:22:12 × EPic_ quits (apic@apic.name) (Max SendQ exceeded)
01:22:20 × Alex_test quits (~al_test@178.34.163.88) (Ping timeout: 240 seconds)
01:22:30 × img quits (~img@user/img) (Ping timeout: 240 seconds)
01:22:30 rubin55_ joins (sid175221@id-175221.hampstead.irccloud.com)
01:22:31 × img_ quits (~img@2405:6580:b1c0:2500:96c6:91ff:fea5:bc11) (Changing host)
01:22:31 img_ joins (~img@user/img)
01:22:33 × Benzi-Junior quits (~BenziJuni@88-149-64-112.du.xdsl.is) (Ping timeout: 255 seconds)
01:22:44 × Pent_ quits (sid313808@id-313808.lymington.irccloud.com) (Ping timeout: 240 seconds)
01:22:44 × acertain_ quits (sid470584@id-470584.hampstead.irccloud.com) (Ping timeout: 240 seconds)
01:22:44 × AlexZenon quits (~alzenon@178.34.163.88) (Ping timeout: 240 seconds)
01:22:44 × 080AAA5IJ quits (~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
01:22:44 × tom__ quits (~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Ping timeout: 240 seconds)
01:22:58 Clint joins (~Clint@thumb.scru.org)
01:22:59 × landonf_ quits (landonf@mac68k.info) (Ping timeout: 240 seconds)
01:23:00 × farn quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 240 seconds)
01:23:00 × 042AAA36V quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 240 seconds)
01:23:00 × heartburn quits (~gass@2a00:d880:3:1::b1e4:b241) (Ping timeout: 240 seconds)
01:23:00 × tcard__ quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 240 seconds)
01:23:07 phma_ is now known as phma
01:23:08 Benzi-Junior joins (~BenziJuni@88-149-64-112.du.xdsl.is)
01:23:08 × hpc_ quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 240 seconds)
01:23:08 × cln quits (cln@wtf.cx) (Ping timeout: 240 seconds)
01:23:08 × extor quits (~extor@ns3018124.ip-149-202-82.eu) (Ping timeout: 240 seconds)
01:23:08 × PotatoGim_ quits (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 240 seconds)
01:23:08 × piele_ quits (~piele@tbonesteak.creativeserver.net) (Ping timeout: 240 seconds)
01:23:24 × Clint quits (~Clint@thumb.scru.org) (Changing host)
01:23:24 Clint joins (~Clint@user/clint)
01:23:29 × ggb_ quits (a62ffbaf4f@2604:bf00:561:2000::3ac) (Ping timeout: 240 seconds)
01:23:30 × delyan_ quits (sid523379@id-523379.hampstead.irccloud.com) (Ping timeout: 240 seconds)
01:23:30 × shapr` quits (~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291) (Ping timeout: 240 seconds)
01:23:38 piele joins (~piele@tbonesteak.creativeserver.net)
01:23:46 chromobl1b is now known as chromoblob
01:23:55 remsen joins (ianremsen@tilde.team)
01:23:56 × raym_ quits (~ray@user/raym) (Ping timeout: 240 seconds)
01:24:06 JSharp joins (sid4580@id-4580.lymington.irccloud.com)
01:24:07 × foul_owl quits (~kerry@71.212.137.212) (Client Quit)
01:24:10 SrPx_ joins (sid108780@id-108780.uxbridge.irccloud.com)
01:24:27 cln joins (cln@wtf.cx)
01:24:28 heartburn joins (~gass@2a00:d880:3:1::b1e4:b241)
01:24:29 hpc joins (~juzz@ip98-169-35-163.dc.dc.cox.net)
01:24:32 farn joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
01:24:37 acertain_ joins (sid470584@id-470584.hampstead.irccloud.com)
01:24:49 × haritz quits (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
01:24:49 haritz joins (~hrtz@user/haritz)
01:24:51 raym joins (~ray@115.187.32.4)
01:25:07 PotatoGim_ joins (sid99505@id-99505.lymington.irccloud.com)
01:25:21 × raym quits (~ray@115.187.32.4) (Changing host)
01:25:21 raym joins (~ray@user/raym)
01:25:44 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
01:25:52 Vajb joins (~Vajb@2001:999:484:a37d:e618:9886:4843:f5d8)
01:26:17 Ankhers joins (e99e97ef8e@2604:bf00:561:2000::2a2)
01:26:31 ymherklotz joins (cb2c9cfbdd@2604:bf00:561:2000::29a)
01:26:37 Alex_test joins (~al_test@178.34.163.88)
01:26:37 AlexZenon joins (~alzenon@178.34.163.88)
01:27:01 falafel joins (~falafel@2601:482:8003:cd80:3095:f1cc:14b9:ee5e)
01:27:12 × falafel quits (~falafel@2601:482:8003:cd80:3095:f1cc:14b9:ee5e) (Remote host closed the connection)
01:27:14 Raito_Bezarius joins (~Raito@2001:470:ca5e:dee:f482:b4ff:fe18:2d7d)
01:27:32 bionade24 joins (~bionade24@2a03:4000:33:45b::1)
01:27:35 × Raito_Bezarius quits (~Raito@2001:470:ca5e:dee:f482:b4ff:fe18:2d7d) (Client Quit)
01:27:57 landonf joins (landonf@mac68k.info)
01:28:05 thegeekinside joins (~thegeekin@189.217.90.138)
01:28:25 witcher joins (~witcher@wiredspace.de)
01:28:32 cyphase joins (~cyphase@user/cyphase)
01:28:40 sus joins (1b7af6299f@user/zeromomentum)
01:28:46 b0o joins (0e4a0bf4c9@2604:bf00:561:2000::1bf)
01:29:05 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:29:09 turlando joins (~turlando@user/turlando)
01:29:12 falafel joins (~falafel@2601:482:8003:cd80:3095:f1cc:14b9:ee5e)
01:29:12 sm2n joins (ae95cb1267@user/sm2n)
01:29:14 jkoshy joins (99b9359beb@user/jkoshy)
01:29:14 cheater_ joins (~Username@user/cheater)
01:29:14 cheater_ is now known as cheater
01:29:16 arcadewise joins (52968ed80d@2604:bf00:561:2000::3df)
01:29:18 retropikzel joins (9d1a4f9f46@2604:bf00:561:2000::ce)
01:30:12 jleightcap joins (7bc4014b62@user/jleightcap)
01:30:16 mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es)
01:30:17 flukiluke joins (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
01:30:17 n1essa joins (3d621153a5@2604:bf00:561:2000::df7)
01:30:19 Nosrep joins (~Nosrep@user/nosrep)
01:30:19 chaitlatte0 joins (ea29c0bb16@2604:bf00:561:2000::1124)
01:30:21 srk joins (~sorki@user/srk)
01:30:30 × chaitlatte0 quits (ea29c0bb16@2604:bf00:561:2000::1124) (Changing host)
01:30:30 chaitlatte0 joins (ea29c0bb16@user/chaitlatte0)
01:30:36 <ijqq_> :/
01:30:38 × Nosrep quits (~Nosrep@user/nosrep) (Remote host closed the connection)
01:30:50 mauke joins (~mauke@user/mauke)
01:31:00 lbseale joins (~quassel@user/ep1ctetus)
01:31:07 Maxdamantus joins (~Maxdamant@user/maxdamantus)
01:31:15 fluffyballoon joins (45ce440a48@2604:bf00:561:2000::e2)
01:31:27 juri_ joins (~juri@84-19-175-187.pool.ovpn.com)
01:31:33 Nosrep joins (~Nosrep@user/nosrep)
01:31:46 jakzale joins (6291399afa@user/jakzale)
01:31:52 anpad joins (~pandeyan@135-180-53-134.fiber.dynamic.sonic.net)
01:31:55 probie joins (cc0b34050a@user/probie)
01:31:57 × anpad quits (~pandeyan@135-180-53-134.fiber.dynamic.sonic.net) (Changing host)
01:31:57 anpad joins (~pandeyan@user/anpad)
01:32:05 henrytill joins (e0180937c3@2604:bf00:561:2000::e8c)
01:32:05 MonsoonSecrecy joins (f78c86e960@2604:bf00:561:2000::f99)
01:32:09 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:32:09 manwithluck joins (~manwithlu@2406:da14:5ea:e400:49df:93ba:b95b:7bda)
01:32:20 JoelMcCracken joins (5ea8252fbb@2604:bf00:561:2000::10e3)
01:32:23 dtman34 joins (~dtman34@2601:447:d000:93c9:a04d:f386:6724:b122)
01:32:36 hexeme joins (~hexeme@user/hexeme)
01:32:41 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
01:32:45 m5zs7k joins (aquares@web10.mydevil.net)
01:32:53 shriekingnoise joins (~shrieking@186.137.175.87)
01:33:04 adamCS joins (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com)
01:33:12 glider joins (~glider@user/glider)
01:33:12 jlwoodwa joins (~jlwoodwa@173.30.18.191)
01:33:17 energizer joins (~energizer@user/energizer)
01:33:28 Angelz joins (Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973)
01:33:32 <chromoblob> ijqq_: i'm glad to discuss with you how to write more idiomatic code, but i'm going to sleep now. i'll be around tomorrow
01:33:40 anderson joins (~anderson@user/anderson)
01:33:47 Yumemi joins (~Yumemi@chamoin.net)
01:33:51 <ijqq_> Okay cool, me too actually.
01:33:59 ft joins (~ft@p508dbdef.dip0.t-ipconnect.de)
01:34:08 shreyasminocha joins (51fdc93eda@user/shreyasminocha)
01:34:13 <ijqq_> Thank you very much for the help, I'll be on tomorrow too, hopefully see you then
01:34:14 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
01:34:26 evanrelf joins (3addc196af@2604:bf00:561:2000::f0)
01:34:33 fvr joins (ef3e56ca8b@2604:bf00:561:2000::3c4)
01:34:59 RMSBach joins (~guygastin@137.184.131.156)
01:35:14 APic joins (apic@apic.name)
01:35:19 ggb joins (a62ffbaf4f@2604:bf00:561:2000::3ac)
01:35:31 euandreh joins (~Thunderbi@189.6.18.7)
01:36:00 delyan_ joins (sid523379@id-523379.hampstead.irccloud.com)
01:36:15 extor joins (~extor@ns3018124.ip-149-202-82.eu)
01:36:23 whereiseveryone joins (206ba86c98@2604:bf00:561:2000::2e4)
01:36:48 Pent_ joins (sid313808@id-313808.lymington.irccloud.com)
01:36:58 heath2 joins (~heath@user/heath)
01:38:17 ddellaco1 joins (~ddellacos@146.70.165.139)
01:38:24 robobub_ joins (uid248673@id-248673.uxbridge.irccloud.com)
01:39:45 samhh_ joins (7569f027cf@2604:bf00:561:2000::e4)
01:40:58 theesm joins (2cbdf4b38a@2604:bf00:561:2000::11c8)
01:41:49 <Axman6> ijqq_: I don't have any problem with that code
01:42:44 <ijqq_> ohh I though you were saying Oh Dear upon seeing it
01:46:00 jargon joins (~jargon@184.101.75.235)
01:46:38 arrowhea_ joins (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
01:47:35 × jlwoodwa quits (~jlwoodwa@173.30.18.191) (Quit: Leaving)
01:48:29 <arrowhea_> jackdk: but also, why lenses over IORef? Are lenses more functional? What about the claims they are unidiomatic?
01:48:36 arrowhea_ is now known as arrowhead
01:50:06 <dibblego> I once tried to learn to fly an aeroplane, but it was unidiomatic, so I stopped. I can tell it was a good idea to stop because aeroplanes must be unidiomatic.
01:52:28 <jackdk> I reject the claims that lens is unidiomatic. I'm advocating an idiom made of functions, and you can pick up full lens later if you're interested. But yes, I'd say they're "more functional" - I very rarely need to write code that touches IORefs, and when I was first getting into Haskell I thought I needed them a lot more than I actually do.
01:52:57 <Axman6> ijqq_: no, looks like we had a netsplit so a lot of users were joining and parting
01:54:53 <Axman6> so that's what the oh dear was about, your client might hide that that's happened. I think that tokeniser is very easy to follow and pretty easy to check its correctness
01:56:49 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 268 seconds)
01:57:02 <ijqq_> oh interesting, i didn't know about that. and thank you :)
01:57:20 <ijqq_> even has a wikipedia
01:57:25 × phma quits (phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae) (Read error: Connection reset by peer)
01:57:49 phma joins (phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae)
01:58:06 Adran joins (~adran@botters/adran)
01:58:11 zer0bitz joins (~zer0bitz@user/zer0bitz)
01:58:33 jargon_ joins (~jargon@184.101.75.235)
01:59:25 mauke_ joins (~mauke@user/mauke)
01:59:34 × thegeekinside quits (~thegeekin@189.217.90.138) (Ping timeout: 255 seconds)
01:59:34 × Vajb quits (~Vajb@2001:999:484:a37d:e618:9886:4843:f5d8) (Ping timeout: 255 seconds)
01:59:48 thegeekinside joins (~thegeekin@189.217.90.138)
02:00:01 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 255 seconds)
02:00:13 euandreh1 joins (~Thunderbi@189.6.18.7)
02:00:28 × jargon quits (~jargon@184.101.75.235) (Ping timeout: 255 seconds)
02:00:28 × robobub_ quits (uid248673@id-248673.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
02:00:28 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
02:00:28 × AlexZenon quits (~alzenon@178.34.163.88) (Ping timeout: 255 seconds)
02:00:35 m5zs7k_ joins (aquares@web10.mydevil.net)
02:00:38 srk- joins (~sorki@user/srk)
02:00:38 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
02:00:49 AlexZenon joins (~alzenon@178.34.163.88)
02:00:55 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 255 seconds)
02:00:55 × mauke quits (~mauke@user/mauke) (Ping timeout: 255 seconds)
02:00:55 mauke_ is now known as mauke
02:01:04 Vajb joins (~Vajb@2001:999:484:a37d:e618:9886:4843:f5d8)
02:01:21 × m5zs7k quits (aquares@web10.mydevil.net) (Quit: m5zs7k)
02:01:22 × ft quits (~ft@p508dbdef.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
02:01:22 × srk quits (~sorki@user/srk) (Ping timeout: 255 seconds)
02:01:22 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 255 seconds)
02:01:22 × zer0bitz_ quits (~zer0bitz@user/zer0bitz) (Ping timeout: 255 seconds)
02:01:34 foul_owl joins (~kerry@71.212.137.212)
02:01:48 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
02:01:56 Lord_of_Life_ is now known as Lord_of_Life
02:01:59 × phma quits (phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae) (Read error: Connection reset by peer)
02:02:11 cyphase joins (~cyphase@user/cyphase)
02:02:11 × arrowhead quits (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
02:02:23 phma joins (~phma@host-67-44-208-30.hnremote.net)
02:02:30 euandreh1 is now known as euandreh
02:02:48 ft joins (~ft@p508dbdef.dip0.t-ipconnect.de)
02:03:03 × xff0x_ quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 255 seconds)
02:03:24 srk- is now known as srk
02:03:43 mauke_ joins (~mauke@user/mauke)
02:04:03 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
02:04:11 robobub_ joins (uid248673@id-248673.uxbridge.irccloud.com)
02:05:25 × mauke quits (~mauke@user/mauke) (Ping timeout: 255 seconds)
02:05:25 mauke_ is now known as mauke
02:06:12 arrowhead joins (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
02:07:19 <arrowhead> dibblego: the "so I stopped" part doesn't follow because instead of stopping I used IORef.
02:07:27 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
02:07:49 <dibblego> yeah no worries, I stopped using lens because it is unidiomatic, says so on the internet
02:08:41 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
02:08:47 <arrowhead> jackdk: I am curious why lenses are more functional than IORef. After implementing "IORef" in Scheme in terms of delimited continuations (i.e. immutably implemented) I have convinced myself that IORef is isomorphic to proper (i.e. immutable) algebraic effect-based IORef (mutable cells)
02:09:15 hugo joins (znc@verdigris.lysator.liu.se)
02:09:15 m5zs7k_ is now known as m5zs7k
02:09:15 × arrowhead quits (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
02:09:19 DDR joins (~DDR@2604:3d08:4c7f:8250:4f2c:b738:d82e:1bc4)
02:10:21 arrowhead joins (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
02:10:22 <arrowhead> dibblego: I am not someone to just trust what I read on the internet. See my argument above. If I understand, as I think I do, that IORefs are isomorphic to immutable reference cells implemented on top of delimited continuations (which is equivalent to its monadic STRef implementation) then why say IORefs are less functional?
02:10:30 mixfix41 joins (~sdeny9ee@user/mixfix41)
02:11:11 <c_wraith> arrowhead: does your implementation show modifications done by concurrent threads?
02:11:27 <arrowhead> dibblego: I am not yet convinced IORefs are "not functional enough" or even "not functional" and I submit that thinking they are less functional might be what is popularly gathered from the internet
02:12:13 <arrowhead> c_wraith: I don't worry about concurrency, sorry :/
02:12:26 <c_wraith> arrowhead: then you're ignoring what makes IORef not functional
02:12:51 <arrowhead> I might be. What is the part I am missing?
02:13:07 <c_wraith> Thread 1 writes a value to an IORef. Thread 2 sees the change.
02:14:01 <arrowhead> But for a single-threaded program, where is IORef not functional?
02:14:47 × falafel quits (~falafel@2601:482:8003:cd80:3095:f1cc:14b9:ee5e) (Remote host closed the connection)
02:14:50 <c_wraith> in interface? If you ignore efficiency, it's roughly equivalent to a State transformer carrying a Map
02:15:07 <c_wraith> The efficiency is a big deal, though
02:15:31 ames joins (~amelia@offtopia/offtopian/amelia)
02:15:53 <arrowhead> yes, I completely agree, although I am a beginner and you know more than I do, so by agreeing I mean I am happy I was right about that (equivalent to a StateT with a Map inside to model the refs, minus efficiency penalty)
02:16:25 <c_wraith> But O(1) updates and concurrent visibility are the main reasons IORefs exist.
02:16:35 <arrowhead> right, the efficiency is a big deal, which is why IORefs are recommended over StateT Map, right? But in the end they are isomorphic
02:17:01 <arrowhead> c_wraith: thank you I never knew IORef had anything to do with concurrency... I just never think about that. Do people here think a lot about concurrency?
02:17:15 <arrowhead> It's almost never been a part of my life in decades of professional programming
02:17:24 <c_wraith> Probably. There are too many people here to ascribe anything to all of them :)
02:17:24 jargon_ is now known as jargon
02:17:53 <arrowhead> no worries.
02:17:55 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
02:18:26 × bgamari quits (~bgamari@64.223.233.113) (Server closed connection)
02:18:39 <arrowhead> I actually almost switched to a StateT Map but then again I thought there's nothing about IORef that isn't exactly like that when done e.g. in OCaml effects
02:18:58 <c_wraith> I almost never reach for IORef. If I want concurrency, I'm probably going for STM as my first pass. If I'm in a context where I need O(1) updates without concurrency, ST is my main choice. If I don't need either of those, I stick to pure interfaces as much as possible.
02:19:25 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:19:25 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:19:25 finn_elija is now known as FinnElija
02:19:25 <arrowhead> But isn't STRef totally isomorphic to IORef ?
02:19:35 <arrowhead> The difference is one "run" call in main
02:19:43 bgamari joins (~bgamari@64.223.233.113)
02:19:54 <c_wraith> ST gives you an externally-pure interface while maintaining O(1) updates internally.
02:20:23 <c_wraith> It's only something to reach for when you're going for efficiency improvements
02:20:54 <arrowhead> Wait, are you saying if I rewrite a program that was previously written solely using IORefs, now with STRefs, it will improve in efficiency?
02:21:16 <c_wraith> No, I'm comparing to a completely pure version, rather than an externally-pure version
02:21:49 <arrowhead> understood. In other words STRef is the fastest pure (outside IO) ref
02:22:11 falafel joins (~falafel@c-68-47-242-91.hsd1.tn.comcast.net)
02:22:15 <c_wraith> like.. shuffling a list, for instance. It's pretty easy to do with just lists and the random package. But it's faster to throw everything into a vector/array and use ST to keep the internal mutation hidden.
02:22:36 <arrowhead> I see that.
02:25:48 <arrowhead> I think I will stick with the IORef because in my case I just cannot see a benefit to using STRefs instead
02:26:32 <arrowhead> I used to think IORefs were "less functional" but after implementing them on top of algebraic effects and delimited continuations I no longer think so and I now think they are perfectly functional.
02:26:54 <Daniel[m]123> just use TVars
02:27:18 <arrowhead> Just suffices to look at Oleg Kiselyov's implementation of refs over effects to see it uses no state and still models a perfect IORef.
02:27:26 <arrowhead> Daniel[m]123: why?
02:27:56 <Daniel[m]123> arrowhead: because if you're writing something non-trivial its gonna be async
02:28:33 <Daniel[m]123> actually i just realised this is bullshit because most people who write haskell either a) write something trivial or academic or b) write cli apps where there is no performance concerns
02:28:44 <Daniel[m]123> judging from 2022 state of haskell survey
02:28:47 <Daniel[m]123> so nvm ignore me
02:29:05 <arrowhead> Daniel[m]123: well, monad transformers are quasi-equivalent to algebraic effects which are basically async spread wide, so your objection is moot as it is already satisfied.
02:29:24 lilpotent_jlemen joins (~lilpotent@2001:470:69fc:105::3:6eb6)
02:29:27 <Daniel[m]123> monad transformers dont handle async
02:29:36 <arrowhead> equivalently they do
02:29:36 <Daniel[m]123> it just handles type tetris is a better way
02:29:56 <Daniel[m]123> except its still bad so people are trying to see if effects are better
02:30:12 <Daniel[m]123> they dont
02:30:19 <Daniel[m]123> async means your code is shared across contexts
02:30:20 <arrowhead> Daniel[m]123: effects are composable with one tiny tradeoff
02:30:48 <arrowhead> Daniel[m]123: read: Monad Transformers and Modular Algebraic Effects: What Binds Them Together
02:31:27 <arrowhead> Daniel[m]123: summary: algebraic effects are basically equivalent to monad transformers; the former is basically equivalent to async used to stop-and-go the program between handlers; hence monad transformers are equivalent to async widely used.
02:31:41 <arrowhead> where's the guy who said I repeat what I read on the web? :P
02:31:55 <arrowhead> I do and then I cite it.
02:32:33 <Daniel[m]123> wut?
02:32:39 <arrowhead> Daniel[m]123: "async means your code is shared across contexts" -> yes, across delimited continuations specifically.
02:32:47 <arrowhead> do you even shift and reset?
02:33:08 <Daniel[m]123> in particular, your code may be shared across another process and thread
02:33:28 <arrowhead> Look at e.g. how C# implements Algebraic Effects, it's over async. And that is an "academically approved", correct implementation.
02:33:28 <Daniel[m]123> but then again
02:33:45 <Daniel[m]123> thats just c# being c#
02:33:52 <arrowhead> Daniel[m]123: yes, across process and threads, all of which look the same from a CPS point of view (CPS is needed for delimited continuations that are not atop of async)
02:33:57 <Daniel[m]123> and mind you thats effects
02:33:59 <Daniel[m]123> not MTs
02:34:03 <arrowhead> Daniel[m]123: no, as I said, that is an academically approved implementation
02:34:12 glguy_ is now known as glguy
02:34:17 <Daniel[m]123> MTs are different from effects and as i said, MT is bad, doesn't handle async
02:34:18 <arrowhead> hence, it'w not C# being C# but C# implementing an implementation straight from a paper
02:34:22 <Daniel[m]123> so they want effects
02:34:33 <arrowhead> Daniel[m]123: I just cited you a paper thaat argues MT = Eff
02:34:43 <arrowhead> they're not differ4ene
02:34:43 <Daniel[m]123> i didnt see anything
02:34:47 <Daniel[m]123> lmao
02:34:48 <arrowhead> you said it, I quoted a paper
02:34:54 <arrowhead> read: Monad Transformers and Modular Algebraic Effects: What Binds Them Together
02:34:56 <Daniel[m]123> ?
02:34:59 <Daniel[m]123> LMAO
02:35:00 <arrowhead> see it?
02:35:02 <Daniel[m]123> dude
02:35:27 <Daniel[m]123> We characterise a class of algebraic effects that is modular, and show how these correspond to a specific class of monad transformers.
02:35:35 <Daniel[m]123> aka they have a particular subset
02:35:37 <arrowhead> read the conclusion
02:35:46 <arrowhead> that's not how you read a paper,
02:35:48 <Daniel[m]123> the claim is the same as "haskell is a imperative language"
02:35:50 <Daniel[m]123> it is correct
02:36:04 <arrowhead> look if you want to ignore Eff = MT go ahead, but they're the same
02:36:06 × phma quits (~phma@host-67-44-208-30.hnremote.net) (Read error: Connection reset by peer)
02:36:09 <arrowhead> the paper shows it
02:36:13 <Daniel[m]123> you can tell that to eff guys
02:36:18 <Daniel[m]123> is lexi here
02:36:21 <arrowhead> the difference is miniscule and hard to characterize even
02:36:29 <arrowhead> almost inexistent in usage
02:36:33 phma joins (~phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae)
02:36:44 <Daniel[m]123> they showed that they both can model the same thing
02:36:51 <Daniel[m]123> but it is different for good reason
02:36:57 <Daniel[m]123> we cant say effects when we mean MT
02:37:10 <arrowhead> right, and if two things can outwardly do the same thing then by Category they are the same thing
02:37:41 <Daniel[m]123> and in particular, the actual implementation is very different
02:37:50 <arrowhead> Don't worry, MTs are still strictly more powerful, but if you read the paper I still challenge you to explain the difference.
02:38:00 <arrowhead> Daniel[m]123: for sure the implementations are completely different
02:38:20 <Axman6> arrowhead: you seem to be jumping a long way ahead with a language you do not yet understrand and trying to fit it into a hole that you have provided, where it solves those problems in a different way
02:38:22 <arrowhead> Daniel[m]123: hence the point of knowing they're equivalent, to possibly move forward with more research into one over the other
02:38:41 <Daniel[m]123> ???
02:39:00 <arrowhead> Axman6: I don't understand. Are you saying I am trying to shape Haskell into something it is not?
02:39:01 × phma quits (~phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae) (Read error: Connection reset by peer)
02:39:25 phma joins (phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae)
02:41:07 <arrowhead> all I was saying is IORef doesn't look taboo to me anymore after I saw Oleg's pure effectful state cell have an API looking exactly like IORef
02:43:08 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
02:43:08 × arrowhead quits (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
02:43:47 × td_ quits (~td@i5387091C.versanet.de) (Ping timeout: 265 seconds)
02:44:32 arrowhead joins (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
02:44:58 xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:45:17 td_ joins (~td@i53870918.versanet.de)
02:47:09 <arrowhead> I suppose I should use STRef for the reason that it is the proper type for modeling reference cells whereas IORef is that plus access to the real world, which can be factored out and lifted out.
02:47:56 shapr`` is now known as shapr
02:54:10 × hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Quit: Leaving)
02:54:23 hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
02:56:10 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
02:59:40 hays joins (rootvegeta@fsf/member/hays)
03:01:46 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
03:04:22 killer joins (~killer@210-129-13-32.farad.jp-east-2.compute.idcfcloud.net)
03:05:02 <dibblego> arrowhead: I am not in the "is or is not functional" discussion. Instead, "is or is not appropriate"
03:05:42 × killer quits (~killer@210-129-13-32.farad.jp-east-2.compute.idcfcloud.net) (Remote host closed the connection)
03:06:29 × jero98772 quits (~jero98772@2800:484:1d7f:5d36::2) (Remote host closed the connection)
03:09:25 cheater joins (~Username@user/cheater)
03:09:35 <arrowhead> dibblego: then I agree with you that STRef is more appropriate than IORef in possibly most cases and also in my case.
03:10:55 <dibblego> I do not.
03:11:20 <probie> Do many people use STRefs? I don't think I've ever found them particularly helpful - nearly every time I each for ST it's to use it with something like MVector
03:12:03 <arrowhead> probie: are you saying you never need a reference cell or that you use something else for a reference cell other than STRef?
03:17:29 × falafel quits (~falafel@c-68-47-242-91.hsd1.tn.comcast.net) (Ping timeout: 240 seconds)
03:17:59 son0p joins (~ff@181.136.122.143)
03:19:00 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
03:19:11 zmt00 joins (~zmt00@user/zmt00)
03:19:13 Sgeo joins (~Sgeo@user/sgeo)
03:21:08 <probie> I almost never need a reference cell, and in those few cases I do, it's probably a `TVar`. But most code I write is either the backend for boring web apps (mostly stateless), or games (and simple AIs for them) like reversi or fanorona and therefore not indicative of the whole community of Haskell users
03:24:41 <arrowhead> That is so interesting. Mind sharing the libs you use for each? For web I use servant and elm and for frontend for games, SDL and OpenGL, what about you and am I outdated?
03:25:40 oneeyedalien joins (~oneeyedal@125-63-26-34.ip4.superloop.au)
03:25:55 × oneeyedalien quits (~oneeyedal@125-63-26-34.ip4.superloop.au) (Remote host closed the connection)
03:26:14 ai5lk joins (~ai5lk@209-188-121-236.taosnet.com)
03:27:10 ai5lk is now known as shef
03:27:45 jtbx joins (~jtbx@user/jtbx)
03:29:00 bilegeek joins (~bilegeek@2600:1008:b0ad:3907:5a86:a7b0:fb8b:a72e)
03:29:43 phma_ joins (~phma@host-67-44-208-30.hnremote.net)
03:29:44 × shef quits (~ai5lk@209-188-121-236.taosnet.com) (Quit: WeeChat 3.8)
03:31:27 cheater_ joins (~Username@user/cheater)
03:31:36 <Clinton[m]> Is there anyway to derive an instance of a class that contains an associated data family instance? I suspect the answer is no but I thought I'd check.
03:31:48 <probie> Mainly servant, although I often just use WAI's `Application` type directly (running on warp) for simple, single purpose things running on google cloud run. For games, my focus is more on the AI and underlying representation of the game, so I normally don't bother with a GUI
03:32:43 × phma quits (phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae) (Ping timeout: 255 seconds)
03:32:43 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 255 seconds)
03:33:27 <arrowhead> probie: thank you for the informative answer.
03:33:33 <probie> For interfacing with a database, I use persistent and esqueleto. I'm not the biggest fan of either of those, but they work
03:34:24 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
03:34:27 ai5lk joins (~ai5lk@209-188-121-236.taosnet.com)
03:34:47 <arrowhead> yep I use both of those too, very handy
03:35:27 cheater__ joins (~Username@user/cheater)
03:35:27 cheater__ is now known as cheater
03:36:52 × ai5lk quits (~ai5lk@209-188-121-236.taosnet.com) (Client Quit)
03:37:51 cyphase joins (~cyphase@user/cyphase)
03:38:20 × cheater_ quits (~Username@user/cheater) (Ping timeout: 240 seconds)
03:39:27 notzmv joins (~zmv@user/notzmv)
03:39:29 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
03:39:33 cheater_ joins (~Username@user/cheater)
03:39:34 cheater_ is now known as cheater
03:43:19 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
03:44:00 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
03:44:00 × arrowhead quits (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
03:44:26 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
03:44:32 stiell joins (~stiell@gateway/tor-sasl/stiell)
03:52:25 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
03:52:40 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
03:53:39 <sm> I bookmarked a youtube video of dcoutts speaking about cabal recently (ghc contributors workshop ?).. or so I thought. Do you know where it is ?
03:57:54 oneeyedalien joins (~oneeyedal@125-63-26-34.ip4.superloop.au)
03:58:04 × oneeyedalien quits (~oneeyedal@125-63-26-34.ip4.superloop.au) (Remote host closed the connection)
04:01:41 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
04:03:16 Cadey is now known as Xe
04:07:39 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
04:08:33 × ijqq___ quits (uid603979@id-603979.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
04:08:33 × ijqq_ quits (uid603979@id-603979.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
04:12:11 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:14:27 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
04:14:50 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
04:23:44 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
04:27:46 <Nosrep> when i'm looking at profiling output does foobar.\ mean a lambda in foobar
04:28:43 ddellacosta joins (~ddellacos@146.70.171.139)
04:29:20 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
04:30:55 pyrex joins (~pyrex@user/pyrex)
04:31:50 × ddellaco1 quits (~ddellacos@146.70.165.139) (Ping timeout: 260 seconds)
04:34:53 × phma_ quits (~phma@host-67-44-208-30.hnremote.net) (Read error: Connection reset by peer)
04:35:02 stiell joins (~stiell@gateway/tor-sasl/stiell)
04:35:47 phma_ joins (phma@2001:5b0:210b:8018:30a:b50:188a:5ef0)
04:36:01 × pyrex quits (~pyrex@user/pyrex) (Read error: Connection reset by peer)
04:39:16 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
04:40:38 <c_wraith> Nosrep: uh.. that would be an operator named .\
04:42:09 <c_wraith> Nosrep: unless the token in front of it is a capital letter. In which case.. it's a parse error, as \ is syntax, not something that can belong to a module
04:44:27 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value)
04:45:22 × jtbx quits (~jtbx@user/jtbx) (Quit: Lost terminal)
04:47:38 takuan joins (~takuan@178-116-218-225.access.telenet.be)
04:48:23 × jargon quits (~jargon@184.101.75.235) (Remote host closed the connection)
04:49:13 × tomku quits (~tomku@user/tomku) (Server closed connection)
04:49:21 tomku joins (~tomku@user/tomku)
04:56:00 trev joins (~trev@user/trev)
04:59:59 <[Leary]> Nosrep: It does.
05:02:33 <c_wraith> [Leary]: with what extensions?
05:06:20 <[Leary]> c_wraith: No extensions; this is in a *.prof profiling report.
05:06:37 <c_wraith> oh. wow. my reading comprehension sure failed there
05:09:29 × shapr quits (~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291) (Ping timeout: 240 seconds)
05:11:53 × CAT_S quits (apic@brezn3.muc.ccc.de) (Server closed connection)
05:12:07 CAT_S joins (apic@brezn3.muc.ccc.de)
05:13:30 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
05:15:25 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
05:20:09 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
05:21:27 Guest8 joins (~Guest8@2001-b400-e28c-968d-c5ee-e300-cdf0-9a78.emome-ip6.hinet.net)
05:24:12 × ddellacosta quits (~ddellacos@146.70.171.139) (Ping timeout: 255 seconds)
05:24:20 × chromoblob quits (~user@37.113.180.121) (Ping timeout: 240 seconds)
05:33:15 × thegeekinside quits (~thegeekin@189.217.90.138) (Remote host closed the connection)
05:38:41 [_________] joins (~oos95GWG@user/oos95GWG)
05:40:44 thegeekinside joins (~thegeekin@189.217.90.138)
05:41:19 phma_ is now known as phma
05:46:19 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
05:46:49 <Axman6> probie: agreed, STRef is only really useful if you're trying to take an imperative algorithm and write it imperatively, I almost always only use mutable vectors too
05:47:16 acidjnk_new3 joins (~acidjnk@p200300d6e7072f9220dcf85561662d75.dip0.t-ipconnect.de)
05:47:36 chromoblob joins (~user@37.113.180.121)
05:51:12 × acidjnk_new quits (~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
05:51:29 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
06:00:31 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
06:01:29 × chromoblob quits (~user@37.113.180.121) (Ping timeout: 240 seconds)
06:11:54 × mauke quits (~mauke@user/mauke) (Ping timeout: 255 seconds)
06:19:05 michalz joins (~michalz@185.246.207.205)
06:20:31 falafel joins (~falafel@2601:482:8003:cd80:e548:7d8c:2862:3dd6)
06:20:35 mei joins (~mei@user/mei)
06:22:06 × aweinsto1k quits (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Server closed connection)
06:22:18 aweinstock joins (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com)
06:22:43 × shachaf quits (~shachaf@user/shachaf) (Server closed connection)
06:22:51 shachaf joins (~shachaf@user/shachaf)
06:23:12 × user2 quits (~user@103.206.114.86) (Quit: WeeChat 3.8)
06:32:01 Co0kie joins (~Jura@145.224.73.17)
06:34:18 mncheckm joins (~mncheck@193.224.205.254)
06:34:57 × phma quits (phma@2001:5b0:210b:8018:30a:b50:188a:5ef0) (Read error: Connection reset by peer)
06:35:50 phma joins (phma@2001:5b0:211c:2af8:caba:1622:ca05:4197)
06:36:39 × acidjnk_new3 quits (~acidjnk@p200300d6e7072f9220dcf85561662d75.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
06:36:39 × xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
06:38:28 xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
06:39:54 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
06:45:29 × falafel quits (~falafel@2601:482:8003:cd80:e548:7d8c:2862:3dd6) (Ping timeout: 240 seconds)
06:46:59 × bilegeek quits (~bilegeek@2600:1008:b0ad:3907:5a86:a7b0:fb8b:a72e) (Quit: Leaving)
06:53:33 lortabac joins (~lortabac@2a01:e0a:541:b8f0:adaa:7968:23a1:1d20)
07:09:49 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
07:14:39 acidjnk_new3 joins (~acidjnk@p200300d6e7072f92c01bf8b2f3a32a4b.dip0.t-ipconnect.de)
07:16:14 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
07:18:49 fendor joins (~fendor@2a02:8388:1640:be00:7aca:a77a:4a28:631a)
07:20:33 × fendor quits (~fendor@2a02:8388:1640:be00:7aca:a77a:4a28:631a) (Remote host closed the connection)
07:21:02 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
07:22:18 fendor joins (~fendor@2a02:8388:1640:be00:7aca:a77a:4a28:631a)
07:25:27 cheater joins (~Username@user/cheater)
07:25:48 arrowhead joins (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
07:26:24 × xax__ quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:27:02 mmhat joins (~mmh@p200300f1c702b008ee086bfffe095315.dip0.t-ipconnect.de)
07:27:22 × mmhat quits (~mmh@p200300f1c702b008ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
07:27:22 × arrowhead quits (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
07:29:19 arrowhead joins (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
07:29:32 × taupiqueur2 quits (~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net) (Ping timeout: 240 seconds)
07:31:20 <arrowhead> I stand corrected and I appreciate being set on a good course promptly by the feedback here. I am enjoying lenses and in the end they make it easier to "change" deep fields than manual IO unlayering. Thank you #haskell and keep up the awesome.
07:32:25 L29Ah joins (~L29Ah@wikipedia/L29Ah)
07:33:51 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
07:35:08 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
07:35:09 chiselfuse joins (~chiselfus@user/chiselfuse)
07:36:16 Luj joins (~Luj@2a01:e0a:5f9:9681:f71f:fbb2:cbdf:4da0)
07:37:03 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
07:37:11 × chiselfuse quits (~chiselfus@user/chiselfuse) (Client Quit)
07:37:41 chiselfuse joins (~chiselfus@user/chiselfuse)
07:41:26 × juri_ quits (~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 260 seconds)
07:41:54 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
07:42:59 taupiqueur2 joins (~taupiqueu@2a02-842a-8180-4601-3041-7107-38e4-822b.rev.sfr.net)
07:43:44 <Hecate> taupiqueur2: salut 👋
07:50:27 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Read error: Connection reset by peer)
07:50:37 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
07:51:15 drdo joins (~drdo@bl8-153-185.dsl.telepac.pt)
07:51:37 mc47 joins (~mc47@xmonad/TheMC47)
07:52:02 × stallmanator quits (~stallmana@user/stallmanator) (Quit: Ping timeout (120 seconds))
07:52:24 stallmanator joins (~stallmana@user/stallmanator)
07:53:01 × Guest8 quits (~Guest8@2001-b400-e28c-968d-c5ee-e300-cdf0-9a78.emome-ip6.hinet.net) (Quit: Client closed)
07:55:29 titibandit joins (~titibandi@user/titibandit)
07:55:36 gurkenglas joins (~user@dynamic-046-114-177-119.46.114.pool.telefonica.de)
07:56:59 zer0bitz joins (~zer0bitz@user/zer0bitz)
08:05:01 × taupiqueur2 quits (~taupiqueu@2a02-842a-8180-4601-3041-7107-38e4-822b.rev.sfr.net) (Ping timeout: 240 seconds)
08:05:44 czy joins (~user@host-140-26.ilcub310.champaign.il.us.clients.pavlovmedia.net)
08:05:56 chomwitt joins (~chomwitt@2a02:587:7a0e:cf00:1ac0:4dff:fedb:a3f1)
08:07:13 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
08:11:46 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 260 seconds)
08:14:56 dcoutts_ joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
08:14:56 × arrowhead quits (~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
08:15:19 × ft quits (~ft@p508dbdef.dip0.t-ipconnect.de) (Quit: leaving)
08:17:39 × phma quits (phma@2001:5b0:211c:2af8:caba:1622:ca05:4197) (Read error: Connection reset by peer)
08:18:05 phma joins (~phma@host-67-44-208-54.hnremote.net)
08:18:06 bontaq joins (~user@ool-45779b84.dyn.optonline.net)
08:18:32 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
08:20:57 ec_ joins (~ec@gateway/tor-sasl/ec)
08:21:26 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:25:35 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
08:25:45 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 260 seconds)
08:28:55 euandreh joins (~Thunderbi@189.6.18.7)
08:33:00 juri_ joins (~juri@79.140.121.143)
08:34:51 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
08:36:46 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:f078:b941:1c44:5de9)
08:41:23 × defanor quits (~defanor@tart.uberspace.net) (Quit: .)
08:41:42 defanor joins (~defanor@tart.uberspace.net)
08:42:37 zeenk joins (~zeenk@2a02:2f04:a106:3c00::7fe)
08:43:46 × kitzman_ quits (~kitzman@user/dekenevs) (Quit: C-x C-c)
08:44:09 kitzman joins (~kitzman@user/dekenevs)
08:44:55 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:f078:b941:1c44:5de9) (Quit: use-value)
08:48:01 × defanor quits (~defanor@tart.uberspace.net) (Quit: .)
08:48:45 defanor joins (~defanor@tart.uberspace.net)
08:49:01 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:2cf1:36b7:6ec2:d529)
08:49:47 gehmehgeh joins (~user@user/gehmehgeh)
08:55:29 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 240 seconds)
08:56:15 accord joins (uid568320@id-568320.hampstead.irccloud.com)
09:00:00 chele joins (~chele@user/chele)
09:01:18 euandreh joins (~Thunderbi@189.6.18.7)
09:05:57 <eugenrh> What texts do you recommend me for learning the theoretical maths used by or are behind Haskell? Unliked imperative languages that I learnt (like Java), in the case of Haskell, I feel that the Haskell tutorials/guides/books are not enough for learning/understanding the language. There is these mathematical theory that I feel I'm missing, especially when I reading this irc chat that is full of it..
09:05:59 <eugenrh> So, what do you recommend, some nice readings about the theory?
09:07:13 <merijn> eugenrh: There's actually lots of different theories bandied about :p
09:07:51 <eugenrh> something for beginners/intermediate level.. perhaps
09:08:12 <merijn> eugenrh: The lens stuff uses a lot of category theory and associated terminology, although I would say that in terms of ROI for "effort-to-pay off" isn't there for beginners
09:08:47 <merijn> eugenrh: It's hard to go wrong with basic type theory, though. For which the standard intro textbook would be "Types and Programming Languages" by Benjamin Pierce
09:08:56 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
09:09:30 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
09:09:49 <eugenrh> So, I'm looking for the theory that any haskeller should now..
09:10:20 <eugenrh> merijn: I'll check that thanks. How about category theory? any readings there?
09:11:27 <merijn> eugenrh: There's a bunch of books, I've tried like 3 different ones and bounced off of all of them, so not any I'd recommend :p
09:11:31 <lortabac> Pierce's book also talks about object-oriented programming, so it's also useful if you know Java and want to understand it from a theoretical perspective
09:11:47 Lord_of_Life_ is now known as Lord_of_Life
09:12:09 <merijn> eugenrh: Also, the Software Foundations book (well, I guess technically series now?) is really good
09:13:23 <merijn> It's not so much theory haskell is based on and more "formal methods/reasoning about software", but it's still very good and helps illustrate why purely functional stuff is easier to reason about
09:13:33 <lortabac> that said, I am strongly against the idea that you *need* the theory in order to learn Haskell
09:14:09 <lortabac> it's good to learn the theory but it's certainly not required
09:14:12 <merijn> I don't think you need it to learn haskell, but I do think it never hurts to study :)
09:14:29 <lortabac> yes I agree
09:14:32 × acidjnk_new3 quits (~acidjnk@p200300d6e7072f92c01bf8b2f3a32a4b.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
09:14:55 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
09:15:11 <merijn> And if you're interested in underlying theory, TaPL is never a bad choice :D
09:16:08 × jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Remote host closed the connection)
09:17:50 <[Leary]> @where prereqs
09:17:50 <lambdabot> http://www.vex.net/~trebla/haskell/prerequisite.xhtml
09:18:13 <[Leary]> eugenrh: Try reading the above; there's not much to it. More than advanced maths, you probably just need practice.
09:18:29 AlexNoo_ is now known as AlexNoo
09:19:25 <eugenrh> ok
09:20:32 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 248 seconds)
09:22:05 × bjs quits (sid190364@user/bjs) ()
09:22:24 bjs joins (sid190364@user/bjs)
09:22:47 polux joins (~polux@51-15-169-172.rev.poneytelecom.eu)
09:22:49 <eugenrh> lortabac: well, I would like also to (better) understand some discussion here, that made me think I'm really missing some theory..
09:23:03 <tdammers> there is actually surprisingly little theory that "any haskeller would know".
09:23:11 <Daniel[m]123> depends on whether you want to productive or not i guess
09:23:43 <tdammers> IME not even that
09:23:48 <Daniel[m]123> it's like getting people to explain monads, then they point you to theory, even though mathematicians would tell you technically the theory isnt used in the implementation of monads in haskell
09:24:03 × Nikopol quits (nikopol@user/astrorigin) (Server closed connection)
09:24:14 Nikopol joins (nikopol@user/astrorigin)
09:25:05 <lortabac> eugenrh: I mean you could have lots of theoretical discussions around Java too
09:25:05 <tdammers> monads are actually a great example. understanding category theory monads may lead to a deeper understanding and a broader perspective of Haskell's Monad typeclass, but you absolutely do not need to know any category theory to be productive with Monads in Haskell.
09:25:42 <lortabac> it's just that here there are more people who are interested in the theory
09:26:06 <eugenrh> yes, a lot more :)
09:26:16 <tdammers> also that Haskell's design has more theoretical foundations behind it than, say, Java
09:26:37 <tdammers> so knowing the relevant theory *is* important if you want to discuss design decisions in the language itself
09:26:53 <tdammers> or, well, at least it is sometimes
09:27:55 acidjnk joins (~acidjnk@p200300d6e7072f92753eec54266ef16c.dip0.t-ipconnect.de)
09:28:46 <merijn> eugenrh: The core theory underlying Haskell (i.e. the one used within GHC is: System F_omega, which is a specific (typed) lambda calculus. As such lambda calculus and type theory are the most relevant/closely related to "Haskell the language"
09:29:01 <merijn> )
09:29:43 <Daniel[m]123> i guess a large disclaimer is that the theory doesn't actually reflect correctness in programs unless you're dealing with restricted sets of inputs
09:29:49 <eugenrh> I do want to learn Haskell very well and stick with it. I worked in Java for about 15 years, but after I read LYAH, I was very very impressed with Haskell and decided to switch languages.
09:30:43 <merijn> eugenrh: But as mentioned before diving into that theory is not *necessary* for getting productive in Haskell, and I would (personally) say that it's considerably easier to get into the theory once you get the hang of Haskell a bit
09:31:21 <eugenrh> I think I've passed that "a bit" phase..
09:32:31 <merijn> The nice thing about TaPL is that it comes with example implementations of it's type systems/type checkers too (In ocaml, rather than haskell, but even with very basic Haskell knowledge the ocaml should be pretty straightforward to read)
09:32:56 <eugenrh> I feel that to learn Haskell, "in the right way", I should need to also learn some math theory behind it. Also, there a lot of mathematical terms everywhere. Not at all around Java...
09:33:38 ncf recommends the haskell wikibook, as always
09:33:48 <merijn> tbh, I don't think there is a universal right way :p
09:33:53 <eugenrh> ncf: yes, reading that now
09:34:10 <[Leary]> Lambda calculus is the one thing I'd actually suggest learning early (or before) Haskell. Not as 'theory', but as a foundational language for functional programming.
09:34:19 <[Leary]> Haskell is too big.
09:34:38 <eugenrh> merijn: trying to avoid a "bad way" :)
09:35:21 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
09:35:53 <tdammers> re the "mathematical terms": Haskell borrows a lot of terminology from Math (and particularly set theory, formal logic, and category theory), but the borrowing is often somewhat handwavey, and learning the original concept in a Math context just to use its Haskell namesake is often about as sensible as learning classical Latin to ask for directions in Spanish.
09:36:21 <eugenrh> [Leary]: and a nice reading about lamda calculus? I want "nice" as theory is always hard to read... Like "nice" as in LYAH nice..
09:37:52 <[Leary]> eugenrh: I wish I had a good link for this, but I don't; I learned LC through play.
09:38:12 <eugenrh> tdammers: ok, I understand that it's not 100% translation into the language.. But, as you said, the termnology is used a lot..
09:38:40 <tdammers> eugenrh: yes, so learn what the terminology means in Haskell.
09:39:17 × juri_ quits (~juri@79.140.121.143) (Read error: Connection reset by peer)
09:39:30 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Ping timeout: 240 seconds)
09:39:44 <lortabac> TAPL explains lambda calculus quite well, you can skip the formal proofs if you are not interested
09:39:59 <lortabac> but it's expensive, it might not be worth if you are only going to read one chapter
09:40:00 <tdammers> "Functor means you can fmap, where fmap :: (a -> b) -> f a -> f b" is a more helpful explanation than "a functor is a mapping between categories that preserves identity morphisms and composition of morphisms"
09:40:41 juri_ joins (~juri@79.140.121.143)
09:40:45 <tdammers> it's kind of the same thing, but it's not super obvious how the CT definition maps to Haskell
09:42:12 <eugenrh> ok, I see in the TAPL's table of contents, sections about lamda calculus
09:44:37 chromoblob joins (~user@37.113.180.121)
09:45:10 × kraftwerk28 quits (~kraftwerk@178.62.210.83) (Quit: *disconnects*)
09:45:41 juri__ joins (~juri@84-19-175-187.pool.ovpn.com)
09:45:59 × juri_ quits (~juri@79.140.121.143) (Ping timeout: 240 seconds)
09:46:15 kraftwerk28 joins (~kraftwerk@178.62.210.83)
09:47:07 <eugenrh> yes, it is expensive
09:47:45 <eugenrh> maybe I'll just read about it on wikipedia..
09:49:32 <[Leary]> eugenrh: Wikipedia is bad for learning; at least find some lecture notes, e.g., from a quick google search: https://www.cs.cmu.edu/~fp/courses/15814-f21/lectures/01-lambda.pdf (I only skimmed, but it looks reasonable).
09:49:56 × chromoblob quits (~user@37.113.180.121) (Ping timeout: 240 seconds)
09:50:06 <eugenrh> thank you!
09:50:13 <[Leary]> You'll need to follow that up with a lot of exercises, though.
10:00:16 × caubert quits (~caubert@user/caubert) (Server closed connection)
10:00:34 caubert joins (~caubert@user/caubert)
10:03:39 <eugenrh> [Leary]: I'll do all that course https://www.cs.cmu.edu/~fp/courses/15814-f21/schedule.html. Also, that course recommends as on optional textbook this one: Robert Harper, 'Practical Foundations for Programming Languages', and that has a 578 pages online pdf preview version. But it looks intimidating and not what I need right now..
10:03:43 × Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Server closed connection)
10:04:03 Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
10:05:15 laxask joins (~laxask@cfeld-pcx40162.desy.de)
10:05:29 fbytez_ joins (~uid@2001:bc8:2117:100::)
10:05:52 lottaquestions joins (~nick@2607:fa49:503f:6d00:a5bc:3af4:48cc:9dd6)
10:06:06 L29Ah joins (~L29Ah@wikipedia/L29Ah)
10:08:09 × xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
10:11:44 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
10:12:26 gehmehgeh joins (~user@user/gehmehgeh)
10:14:44 × Co0kie quits (~Jura@145.224.73.17) (Ping timeout: 265 seconds)
10:22:00 ubert joins (~Thunderbi@2a02:8109:abc0:6434:1181:6da5:7700:e0d3)
10:25:42 <Profpatsch> Is there any pattern for writing a (Json Value) parser which is called from multiple contexts, and only a subset needs to be parsed from each context
10:26:16 <Profpatsch> e.g. e.g. I want to get the fields users.foo and bar.baz in one context and users.bar and baz.bla in another context
10:26:23 × koolazer quits (~koo@user/koolazer) (Server closed connection)
10:26:35 <Profpatsch> but the parser should not fail in the first context if users.bar is not set and not fail in the second if users.foo is not set
10:26:40 koolazer joins (~koo@user/koolazer)
10:27:30 <Profpatsch> best I can think about is writing very fine-grained parsers and then combining them ad-hoc
10:27:48 <ncf> parseFooBaz <|> parseBarBla ?
10:27:52 <Profpatsch> I guess HasField will have to do
10:28:14 <Profpatsch> ncf: I have a config file which should only annoy the user if they want to use a subcommand that needs a field
10:28:37 <Profpatsch> so if I want to call `cli foo` I should only be required to set the config options that are relevant to the `foo` subcommand
10:28:45 <Profpatsch> same for `cli bar`
10:28:58 <Profpatsch> yeah, I think HasField will be good for this
10:29:29 <Profpatsch> Oh, and in addition I’m generating a schema for all config options, so I’d need a “fullParser” that concats all subsets of parsers somehow
10:30:19 <Profpatsch> I’ll see if I can get a union operation working
10:30:53 <Profpatsch> (the config.json starts with "$schema": "./generated-schema.json" which is auto-updated iff the schema changes
10:31:03 <ncf> i'd parse everything into Maybe and let subcommands complain if they get Nothing
10:31:23 <Profpatsch> ncf: yeah, that’s another way to do it I guess
10:31:25 <Profpatsch> hrm
10:32:06 <Profpatsch> HasField is so good, now Haskal only needs compiler support for anonymous structs and we are golden
10:32:18 <Profpatsch> *only* :P
10:33:00 chromoblob joins (~user@37.113.180.121)
10:36:20 × laxask quits (~laxask@cfeld-pcx40162.desy.de) (Quit: Client closed)
10:36:50 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
10:41:08 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
10:42:50 <[exa]> For dockerized haskell apps, is there any simple way to install "only dependencies" in an intermediate docker build step so that the dependencies of the package don't need to be recompiled everytime I rebuild the image?
10:43:21 <[exa]> (problem: I change 1 letter in the code -> docker rebuilds everything)
10:44:19 <[exa]> spoiler: cabal install --only-dependencies doesn't cut it because docker is unaware of the fact that nothing changed
10:51:19 __monty__ joins (~toonn@user/toonn)
11:00:58 × erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
11:01:49 erisco joins (~erisco@d24-141-66-165.home.cgocable.net)
11:03:13 xff0x_ joins (~xff0x@ai098135.d.east.v6connect.net)
11:03:55 zer0bitz_ joins (~zer0bitz@user/zer0bitz)
11:03:55 Stone joins (~Stone@2405:201:c02a:1274:95a:6d70:6567:7cf8)
11:04:51 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 255 seconds)
11:08:16 × texasmynsted quits (~username@99.96.221.112) (Server closed connection)
11:08:38 texasmynsted joins (~username@99.96.221.112)
11:09:32 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
11:11:46 × accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
11:14:18 azimut joins (~azimut@gateway/tor-sasl/azimut)
11:17:43 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
11:18:18 zer0bitz joins (~zer0bitz@user/zer0bitz)
11:19:01 × zer0bitz_ quits (~zer0bitz@user/zer0bitz) (Ping timeout: 240 seconds)
11:19:23 × Stone quits (~Stone@2405:201:c02a:1274:95a:6d70:6567:7cf8) (Ping timeout: 245 seconds)
11:22:24 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
11:36:02 zer0bitz_ joins (~zer0bitz@user/zer0bitz)
11:36:48 × zer0bitz_ quits (~zer0bitz@user/zer0bitz) (Client Quit)
11:37:08 × fbytez_ quits (~uid@2001:bc8:2117:100::) (Changing host)
11:37:08 fbytez_ joins (~uid@user/fbytez)
11:38:09 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 255 seconds)
11:40:04 laxask joins (~laxask@cfeld-pcx40162.desy.de)
11:40:39 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
11:43:45 <merijn> I mean, wouldn't the solution be to make docker aware that nothing changed?
11:45:56 <hpc> whenever people encounter this problem in other languages, the answer always seems to be making intermediate images
11:46:32 <merijn> hpc: I mean, I generally think the appropriate solution is: get rid of docker, but I realise that's generally not the desired answer :p
11:46:50 <hpc> yeah, that too
11:48:10 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:48:16 laxask parts (~laxask@cfeld-pcx40162.desy.de) ()
11:53:29 gascown joins (~My_user_n@81.208.15.172)
11:57:05 danse-nr3 joins (~francesco@151.19.254.7)
11:58:33 byte` joins (~byte@user/byte)
11:58:44 taupiqueur2 joins (~taupiqueu@2a02-842a-8180-4601-e9a3-1936-d44b-526b.rev.sfr.net)
11:59:18 × byte quits (~byte@user/byte) (Ping timeout: 268 seconds)
11:59:18 byte` is now known as byte
12:02:14 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
12:02:14 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
12:02:14 wroathe joins (~wroathe@user/wroathe)
12:11:06 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:12:42 laxmik joins (~user@cfeld-pcx40162.desy.de)
12:18:45 erisco_ joins (~erisco@d24-141-66-165.home.cgocable.net)
12:19:01 × erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 240 seconds)
12:19:10 erisco_ is now known as erisco
12:23:21 × danse-nr3 quits (~francesco@151.19.254.7) (Read error: Connection reset by peer)
12:23:23 danse-nr3_ joins (~francesco@151.35.246.225)
12:24:44 × taupiqueur2 quits (~taupiqueu@2a02-842a-8180-4601-e9a3-1936-d44b-526b.rev.sfr.net) (Ping timeout: 240 seconds)
12:24:55 taupiqueur2 joins (~taupiqueu@2a02:842a:8180:4601:95a3:46c4:9fe7:ffd7)
12:27:14 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
12:38:21 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
12:38:53 laxmik is now known as michals
12:41:46 × Everything quits (~Everythin@static.208.206.21.65.clients.your-server.de) (Server closed connection)
12:41:55 Everything joins (~Everythin@static.208.206.21.65.clients.your-server.de)
12:43:00 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Ping timeout: 260 seconds)
12:43:23 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:45:44 × hippoid quits (~hippoid@c-98-213-162-40.hsd1.il.comcast.net) (Remote host closed the connection)
12:46:06 hippoid joins (~hippoid@c-98-213-162-40.hsd1.il.comcast.net)
12:48:50 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
12:51:06 × danse-nr3_ quits (~francesco@151.35.246.225) (Ping timeout: 268 seconds)
12:56:42 cheater_ joins (~Username@user/cheater)
12:59:39 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal)
13:00:00 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
13:00:30 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
13:00:39 cheater_ is now known as cheater
13:02:01 × chiselfuse quits (~chiselfus@user/chiselfuse) (Quit: leaving)
13:02:02 barcisz joins (~barcisz@79.191.35.59.ipv4.supernova.orange.pl)
13:02:39 chiselfuse joins (~chiselfus@user/chiselfuse)
13:05:29 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
13:06:25 jero98772 joins (~jero98772@2800:484:1d7f:5d36::2)
13:08:04 danse-nr3_ joins (~francesco@151.35.246.225)
13:09:10 Pickchea joins (~private@user/pickchea)
13:16:57 shef joins (~ai5lk@209-188-121-236.taosnet.com)
13:18:28 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
13:18:57 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Remote host closed the connection)
13:19:25 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
13:20:12 × shef quits (~ai5lk@209-188-121-236.taosnet.com) (Client Quit)
13:23:08 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
13:25:08 × acidjnk quits (~acidjnk@p200300d6e7072f92753eec54266ef16c.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
13:25:51 shef joins (~ai5lk@209-188-121-236.taosnet.com)
13:26:24 × earthy quits (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Ping timeout: 248 seconds)
13:39:26 earthy joins (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net)
13:41:04 ddellacosta joins (~ddellacos@143.244.47.89)
13:45:33 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
13:48:33 gehmehgeh joins (~user@user/gehmehgeh)
13:50:18 × chromoblob quits (~user@37.113.180.121) (Ping timeout: 265 seconds)
13:50:50 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:51:21 × Ross[m]1 quits (~zhichuche@2001:470:69fc:105::3:584b) (Read error: Connection reset by peer)
13:51:21 × ibizaman[m] quits (~ibizamanm@2001:470:69fc:105::a3d) (Read error: Connection reset by peer)
13:51:21 × lilpotent_jlemen quits (~lilpotent@2001:470:69fc:105::3:6eb6) (Read error: Connection reset by peer)
13:51:21 × DustinStiles[m] quits (~duwstiles@2001:470:69fc:105::3:699b) (Read error: Connection reset by peer)
13:51:21 × ocharles[m] quits (~ocharlesm@2001:470:69fc:105::3:5899) (Read error: Connection reset by peer)
13:51:21 × oak- quits (~oak-@2001:470:69fc:105::fcd) (Read error: Connection reset by peer)
13:51:21 × jade[m] quits (~jade256th@2001:470:69fc:105::3:58df) (Read error: Connection reset by peer)
13:51:21 × teo quits (~teo@user/teo) (Write error: Connection reset by peer)
13:51:21 × Daniel[m]123 quits (~danieltan@2001:470:69fc:105::3:6e5e) (Read error: Connection reset by peer)
13:51:21 × tbidne[m] quits (~tbidnemat@2001:470:69fc:105::3:6d42) (Read error: Connection reset by peer)
13:51:21 × aerc[m] quits (~aercmatri@2001:470:69fc:105::3:67b9) (Read error: Connection reset by peer)
13:51:21 × kosmikus[m] quits (~andresloe@2001:470:69fc:105::95d) (Write error: Connection reset by peer)
13:51:22 × somerandomnick[m quits (~somerando@2001:470:69fc:105::3:4f2e) (Write error: Connection reset by peer)
13:51:22 × jorwas[m] quits (~jorwasmat@2001:470:69fc:105::3:60e7) (Write error: Connection reset by peer)
13:51:22 × kleenestar[m] quits (~kleenesta@2001:470:69fc:105::3:6d78) (Read error: Connection reset by peer)
13:51:22 × Clinton[m] quits (~clintonme@2001:470:69fc:105::2:31d4) (Read error: Connection reset by peer)
13:51:22 × ozkutuk[m] quits (~ozkutuk@2001:470:69fc:105::2:9af8) (Read error: Connection reset by peer)
13:51:22 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Write error: Connection reset by peer)
13:51:22 × ners[m] quits (~nersnixos@2001:470:69fc:105::3:648b) (Read error: Connection reset by peer)
13:51:22 × supersven[m] quits (~supersven@2001:470:69fc:105::31b6) (Read error: Connection reset by peer)
13:51:22 × zfnmxt quits (~zfnmxt@user/zfnmxt) (Read error: Connection reset by peer)
13:51:22 × polykernel[m] quits (~polykerne@user/polykernel) (Read error: Connection reset by peer)
13:51:22 × xrvdg[m] quits (~xrvdgmatr@2001:470:69fc:105::3:625a) (Read error: Connection reset by peer)
13:51:22 × romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (Read error: Connection reset by peer)
13:51:22 × shapr[m] quits (~shaprcofr@2001:470:69fc:105::2:d107) (Read error: Connection reset by peer)
13:51:22 × aaronv quits (~aaronv@user/aaronv) (Read error: Connection reset by peer)
13:51:22 × MangoIV[m] quits (~mangoivma@2001:470:69fc:105::2:8417) (Read error: Connection reset by peer)
13:51:23 × jmcantrell quits (~jmcantrel@user/jmcantrell) (Write error: Connection reset by peer)
13:51:23 × JensPetersen[m] quits (~juhp@2001:470:69fc:105::6e9) (Read error: Connection reset by peer)
13:51:23 × VarikValefor[m] quits (~varikvale@2001:470:69fc:105::a5d) (Read error: Connection reset by peer)
13:51:23 × Matthew|m quits (~arathorn@2001:470:69fc:105::1f) (Read error: Connection reset by peer)
13:51:23 × Null_A[m] quits (~jasonjckn@2001:470:69fc:105::bb85) (Read error: Connection reset by peer)
13:51:23 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Read error: Connection reset by peer)
13:51:23 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Read error: Connection reset by peer)
13:51:23 × m1-s[m] quits (~m1-smatri@2001:470:69fc:105::2:39da) (Read error: Connection reset by peer)
13:51:23 × geekosaur[m] quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
13:51:23 × elevenkb quits (~elevenkb@2001:470:69fc:105::2:cb89) (Read error: Connection reset by peer)
13:51:23 × hsiktas[m] quits (~hsiktasm]@2001:470:69fc:105::30d4) (Read error: Connection reset by peer)
13:51:23 × Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Read error: Connection reset by peer)
13:51:23 × eldritchcookie[m quits (~eldritchc@2001:470:69fc:105::2:d53c) (Write error: Connection reset by peer)
13:51:23 × hellwolf[m] quits (~hellwolfm@2001:470:69fc:105::3:6a4) (Read error: Connection reset by peer)
13:51:23 × Inst[m] quits (~instrmatr@2001:470:69fc:105::1:903e) (Read error: Connection reset by peer)
13:51:23 × SeanKing[m] quits (~seankingm@2001:470:69fc:105::cf9c) (Write error: Connection reset by peer)
13:51:23 × alanz quits (~alanz@2001:470:69fc:105::2:49a6) (Read error: Connection reset by peer)
13:51:23 × Deide quits (~deide@user/deide) (Write error: Connection reset by peer)
13:51:23 × ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Read error: Connection reset by peer)
13:51:23 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Read error: Connection reset by peer)
13:51:23 × Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Read error: Connection reset by peer)
13:51:23 × chreekat quits (~chreekat@2001:470:69fc:105::16b5) (Read error: Connection reset by peer)
13:51:23 × kadoban quits (~kadoban@user/kadoban) (Read error: Connection reset by peer)
13:51:23 × end- quits (~end@user/end/x-0094621) (Write error: Connection reset by peer)
13:51:23 × akadude[m] quits (~akadudema@2001:470:69fc:105::2:5bf7) (Read error: Connection reset by peer)
13:51:23 × nomagno quits (~nomagno@2001:470:69fc:105::c1f0) (Write error: Connection reset by peer)
13:51:23 × zebrag[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Read error: Connection reset by peer)
13:51:23 × Guillaum[m] quits (~guiboumat@2001:470:69fc:105::1:72ac) (Read error: Connection reset by peer)
13:51:23 × Las[m]1 quits (~lasmatrix@2001:470:69fc:105::74e) (Read error: Connection reset by peer)
13:51:23 × jean-paul[m] quits (~jean-paul@2001:470:69fc:105::d1ab) (Write error: Connection reset by peer)
13:51:23 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Read error: Connection reset by peer)
13:51:23 × ormaaaj quits (~ormaaj@user/ormaaj) (Read error: Connection reset by peer)
13:51:23 × bgamari[m] quits (~bgamari@2001:470:69fc:105::c7b9) (Write error: Connection reset by peer)
13:51:23 × nicm[m] quits (~nicmollel@2001:470:69fc:105::1:feeb) (Write error: Connection reset by peer)
13:51:23 × joyfulmantis[m] quits (~joyfulman@2001:470:69fc:105::3:400a) (Write error: Connection reset by peer)
13:51:23 × fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Write error: Connection reset by peer)
13:51:23 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Write error: Connection reset by peer)
13:51:23 × peddie quits (~peddie@2001:470:69fc:105::25d) (Write error: Connection reset by peer)
13:51:23 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Write error: Connection reset by peer)
13:51:23 × sm quits (~sm@plaintextaccounting/sm) (Write error: Connection reset by peer)
13:51:23 × elvishjerricco quits (~elvishjer@2001:470:69fc:105::6172) (Read error: Connection reset by peer)
13:51:25 × paulapatience quits (~paulapati@2001:470:69fc:105::16a4) (Read error: Connection reset by peer)
13:54:32 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 240 seconds)
13:54:42 hexology joins (~hexology@user/hexology)
13:56:01 × Hafydd quits (~Hafydd@user/hafydd) (Ping timeout: 240 seconds)
13:57:17 MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417)
13:57:17 <MangoIV[m]> <Profpatsch> "HasField is so good, now..." <- why do you need compiler support? I think the ways of simulating is are pretty ergonomic, no?
13:57:17 <MangoIV[m]> perhaps they are not fast thought
13:57:17 <MangoIV[m]> * perhaps they are not fast though
13:57:30 elain4 joins (~textual@static-71-251-226-194.rcmdva.fios.verizon.net)
13:58:54 Hafydd joins (~Hafydd@user/hafydd)
13:59:19 peddie joins (~peddie@2001:470:69fc:105::25d)
14:00:43 jean-paul[m] joins (~jean-paul@2001:470:69fc:105::d1ab)
14:00:43 <jean-paul[m]> [exa]: You can build your Haskell and Docker images with Nix and you'll get pretty good caching properties.
14:00:58 <jean-paul[m]> As a bonus, this is a useful step towards getting rid of your Docker images too ;)
14:01:11 <merijn> By replacing them with Nix >.>
14:01:39 <merijn> I'm not convinced that's great, unless you wanted to switch careers to "nix infrastructure maintainer" at your company :p
14:04:34 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
14:04:49 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
14:05:37 cheater_ joins (~Username@user/cheater)
14:06:29 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
14:06:43 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
14:07:43 cheater__ joins (~Username@user/cheater)
14:09:34 gehmehgeh joins (~user@user/gehmehgeh)
14:09:53 juri__ is now known as juri_
14:09:55 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
14:11:59 × cheater__ quits (~Username@user/cheater) (Ping timeout: 246 seconds)
14:12:03 × cheater_ quits (~Username@user/cheater) (Ping timeout: 260 seconds)
14:14:05 chromoblob joins (~user@37.113.180.121)
14:16:00 <Profpatsch> MangoIV[m]: they are neither fast nor ergonomics
14:16:01 fgaz joins (~fgaz@2001:470:69fc:105::842)
14:16:01 Null_A[m] joins (~jasonjckn@2001:470:69fc:105::bb85)
14:16:01 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
14:16:01 ocharles[m] joins (~ocharlesm@2001:470:69fc:105::3:5899)
14:16:01 alanz joins (~alanz@2001:470:69fc:105::2:49a6)
14:16:01 maralorn joins (~maralorn@2001:470:69fc:105::251)
14:16:01 sm joins (~sm@plaintextaccounting/sm)
14:16:02 <Profpatsch> -s
14:16:02 nomagno joins (~nomagno@2001:470:69fc:105::c1f0)
14:16:03 Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8)
14:16:03 Deide joins (~deide@user/deide)
14:16:03 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
14:16:03 ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be)
14:16:03 fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd)
14:16:03 jmcantrell joins (~jmcantrel@user/jmcantrell)
14:16:09 × gurkenglas quits (~user@dynamic-046-114-177-119.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
14:16:23 <Profpatsch> And they tend to trigger compiler regressions
14:17:05 <Profpatsch> MangoIV[m]: I released our workaround recently, which is reasonably nice to use in practical projects https://hackage.haskell.org/package/pa-label
14:17:50 <Profpatsch> (see README for explanation)
14:17:54 × Pickchea quits (~private@user/pickchea) (Ping timeout: 255 seconds)
14:20:33 user2 joins (~user@103.206.114.126)
14:20:33 user2 is now known as wns
14:20:54 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
14:23:37 cheater__ joins (~Username@user/cheater)
14:23:37 cheater__ is now known as cheater
14:26:57 JensPetersen[m] joins (~juhp@2001:470:69fc:105::6e9)
14:26:58 jorwas[m] joins (~jorwasmat@2001:470:69fc:105::3:60e7)
14:26:58 ormaaaj joins (~ormaaj@user/ormaaj)
14:26:58 Guillaum[m] joins (~guiboumat@2001:470:69fc:105::1:72ac)
14:26:58 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
14:26:58 Matthew|m joins (~arathorn@2001:470:69fc:105::1f)
14:26:58 chreekat joins (~chreekat@2001:470:69fc:105::16b5)
14:26:58 elevenkb joins (~elevenkb@2001:470:69fc:105::2:cb89)
14:26:58 VarikValefor[m] joins (~varikvale@2001:470:69fc:105::a5d)
14:26:58 bgamari[m] joins (~bgamari@2001:470:69fc:105::c7b9)
14:26:59 supersven[m] joins (~supersven@2001:470:69fc:105::31b6)
14:26:59 zebrag[m] joins (~inkbottle@2001:470:69fc:105::2ff5)
14:26:59 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
14:26:59 paulapatience joins (~paulapati@2001:470:69fc:105::16a4)
14:26:59 elvishjerricco joins (~elvishjer@2001:470:69fc:105::6172)
14:26:59 shapr[m] joins (~shaprcofr@2001:470:69fc:105::2:d107)
14:26:59 hsiktas[m] joins (~hsiktasm]@2001:470:69fc:105::30d4)
14:27:00 kosmikus[m] joins (~andresloe@2001:470:69fc:105::95d)
14:27:00 ozkutuk[m] joins (~ozkutuk@2001:470:69fc:105::2:9af8)
14:27:00 geekosaur[m] joins (~geekosaur@xmonad/geekosaur)
14:27:00 joyfulmantis[m] joins (~joyfulman@2001:470:69fc:105::3:400a)
14:27:00 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
14:27:01 zfnmxt joins (~zfnmxt@user/zfnmxt)
14:27:01 nicm[m] joins (~nicmollel@2001:470:69fc:105::1:feeb)
14:27:01 kadoban joins (~kadoban@user/kadoban)
14:27:01 end- joins (~end@2001:470:69fc:105::3:673f)
14:27:01 SeanKing[m] joins (~seankingm@2001:470:69fc:105::cf9c)
14:27:10 tbidne[m] joins (~tbidnemat@2001:470:69fc:105::3:6d42)
14:27:10 Clinton[m] joins (~clintonme@2001:470:69fc:105::2:31d4)
14:27:10 m1-s[m] joins (~m1-smatri@2001:470:69fc:105::2:39da)
14:27:11 aaronv joins (~aaronv@user/aaronv)
14:27:45 kleenestar[m] joins (~kleenesta@2001:470:69fc:105::3:6d78)
14:27:46 aerc[m] joins (~aercmatri@2001:470:69fc:105::3:67b9)
14:27:46 oak- joins (~oak-@2001:470:69fc:105::fcd)
14:27:47 Daniel[m]1 joins (~danieltan@2001:470:69fc:105::3:6e5e)
14:27:47 ibizaman[m] joins (~ibizamanm@2001:470:69fc:105::a3d)
14:27:47 ners[m] joins (~nersnixos@2001:470:69fc:105::3:648b)
14:27:48 somerandomnick[m joins (~somerando@2001:470:69fc:105::3:4f2e)
14:27:49 lilpotent_jlemen joins (~lilpotent@2001:470:69fc:105::3:6eb6)
14:30:23 × barcisz quits (~barcisz@79.191.35.59.ipv4.supernova.orange.pl) (Quit: Client closed)
14:36:19 × chromoblob quits (~user@37.113.180.121) (Ping timeout: 260 seconds)
14:37:51 × shef quits (~ai5lk@209-188-121-236.taosnet.com) (Quit: WeeChat 3.8)
14:39:49 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
14:44:15 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Ping timeout: 260 seconds)
14:44:25 × danse-nr3_ quits (~francesco@151.35.246.225) (Read error: Connection reset by peer)
14:45:22 danse-nr3_ joins (~francesco@151.43.246.222)
14:45:25 ijqq_ joins (uid603979@id-603979.helmsley.irccloud.com)
14:46:13 Pickchea joins (~private@user/pickchea)
14:47:11 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
14:47:41 azimut joins (~azimut@gateway/tor-sasl/azimut)
14:48:22 shriekingnoise joins (~shrieking@186.137.175.87)
14:51:20 gehmehgeh joins (~user@user/gehmehgeh)
14:51:58 <ijqq_> http://sprunge.us/am6An7
14:51:58 <ijqq_> In here, I want any case where x is a digit to be handled as one, but because I did case x of, now ghci gives me a warning -Wname-shadowing. So is there a way to do this while keeping the check inside the case of block?
14:54:10 <merijn> ijqq_: ok, so first of all name shadowing is not inherently an error (although usually best avoided), there's 2 solutions
14:54:32 <merijn> ijqq_: don't reuse the 'x' variable in the pattern, i.e. change the case line to 'c | isDigit c'
14:54:45 <merijn> ijqq_: Alternatively, use a wildcard and do '_ | isDigit x'
14:54:58 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
14:55:11 <ijqq_> Oh, so c will still be referring to the value of x?
14:55:31 <geekosaur> yes
14:55:32 <merijn> ijqq_: the pattern refers to whatever is between 'case ? of'
14:55:54 <merijn> ijqq_: so "case x of x -> " introduces a new variable 'x' that has the same value as the old x
14:56:14 <merijn> ijqq_: GHC is complaining because you're introducing a new 'x' variable when one is already in scope (which is usually a good way to refer to wrong things)
14:57:21 <ijqq_> Oh cool, I didn't know that. Thank you. I think I'll use the first solution since I might need the wildcard pattern for something else.
14:57:33 <merijn> ijqq_: in the 'c | isDigit c' case you're saying "if none of the values above match, assign the value to x and use that'
14:57:42 <merijn> eh, assign the value to 'c'
14:58:12 <merijn> in the case of '_ | isDigit x' you're assigning the value of 'x' to the wildcard (i.e. ignoring it) and then checking 'x' directly
14:58:46 <merijn> ijqq_: both the wildcard and 'c | isDigit c' should have the same behaviour, in both cases if the guard (isDigit) fails, it will fallthrough to the next
14:59:58 <ijqq_> Ohh, I misread your second solution. So that's probably better then, since I don't need to make a new name c for the same thing?
15:00:27 <merijn> tbh, I think they're about equal.
15:01:06 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
15:03:34 <geekosaur> they should even produce the same core
15:03:47 romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660)
15:04:01 jade[m]1 joins (~jade256th@2001:470:69fc:105::3:58df)
15:04:09 Sgeo joins (~Sgeo@user/sgeo)
15:04:14 akadude[m] joins (~akadudema@2001:470:69fc:105::2:5bf7)
15:04:18 <merijn> Well, I was thinking that the wildcard can break if you refactor the function arguments and the explicit binding won't
15:04:25 <merijn> but that seemed like such a niche nitpick
15:04:29 marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8)
15:04:44 xrvdg[m] joins (~xrvdgmatr@2001:470:69fc:105::3:625a)
15:05:29 teo joins (~teo@user/teo)
15:05:41 Inst[m] joins (~instrmatr@2001:470:69fc:105::1:903e)
15:05:53 eldritchcookie[m joins (~eldritchc@2001:470:69fc:105::2:d53c)
15:06:36 hellwolf[m] joins (~hellwolfm@2001:470:69fc:105::3:6a4)
15:06:52 Las[m]1 joins (~lasmatrix@2001:470:69fc:105::74e)
15:07:14 × pie_ quits (~pie_bnc@user/pie/x-2818909) ()
15:07:37 Ross[m] joins (~zhichuche@2001:470:69fc:105::3:584b)
15:07:49 DustinStiles[m] joins (~duwstiles@2001:470:69fc:105::3:699b)
15:07:49 polykernel[m] joins (~polykerne@user/polykernel)
15:07:50 pie_ joins (~pie_bnc@user/pie/x-2818909)
15:10:40 × pie_ quits (~pie_bnc@user/pie/x-2818909) (Client Quit)
15:11:02 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
15:13:42 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:adaa:7968:23a1:1d20) (Quit: WeeChat 2.8)
15:17:02 × gascown quits (~My_user_n@81.208.15.172) (Quit: WeeChat 3.8)
15:17:43 shapr joins (~user@2600:1700:c640:3100:3dca:cf49:f271:c6b2)
15:19:14 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
15:24:05 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
15:24:18 nyc joins (~nyc@user/nyc)
15:24:20 pie_ joins (~pie_bnc@user/pie/x-2818909)
15:27:38 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
15:28:46 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
15:32:23 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.8)
15:34:43 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:35:01 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
15:43:04 × Nosrep quits (~Nosrep@user/nosrep) (Remote host closed the connection)
15:43:36 Nosrep joins (~Nosrep@user/nosrep)
15:44:02 chromoblob joins (~user@37.113.180.121)
15:46:03 × elain4 quits (~textual@static-71-251-226-194.rcmdva.fios.verizon.net) (Quit: Textual IRC Client: www.textualapp.com)
15:48:13 × zeenk quits (~zeenk@2a02:2f04:a106:3c00::7fe) (Quit: Konversation terminated!)
15:49:00 acidjnk joins (~acidjnk@p200300d6e7072f92b0f51e98686b2908.dip0.t-ipconnect.de)
15:53:02 × chele quits (~chele@user/chele) (Remote host closed the connection)
15:54:33 michals parts (~user@cfeld-pcx40162.desy.de) (ERC (IRC client for Emacs 26.3))
15:54:33 073AAK9LE joins (~oac@72-50-214-210.fttp.usinternet.com)
16:01:56 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
16:04:25 Pickchea joins (~private@user/pickchea)
16:08:08 × titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection)
16:08:26 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
16:11:54 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:12:02 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
16:18:41 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:19:27 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Quit: WeeChat 3.8)
16:26:45 073AAK9LE is now known as oac
16:27:21 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
16:27:22 × ubert quits (~Thunderbi@2a02:8109:abc0:6434:1181:6da5:7700:e0d3) (Read error: Connection reset by peer)
16:31:28 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.8)
16:32:08 mauke joins (~mauke@user/mauke)
16:39:38 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:40:27 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
16:43:53 × chomwitt quits (~chomwitt@2a02:587:7a0e:cf00:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
16:52:50 zaidhaan joins (~zai@2001:f40:960:1c54:3c0f:370:d2d1:4fb9)
16:53:38 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:2cf1:36b7:6ec2:d529) (Remote host closed the connection)
16:53:57 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:2cf1:36b7:6ec2:d529)
16:54:59 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
16:57:23 × ystael quits (~ystael@user/ystael) (Server closed connection)
16:57:38 ystael joins (~ystael@user/ystael)
16:59:56 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
16:59:56 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
16:59:56 wroathe joins (~wroathe@user/wroathe)
17:00:14 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
17:04:41 × danse-nr3_ quits (~francesco@151.43.246.222) (Ping timeout: 256 seconds)
17:05:20 mud joins (~mud@user/kadoban)
17:06:57 ripspin joins (~chatzilla@1.145.195.123)
17:08:24 × wns quits (~user@103.206.114.126) (Quit: WeeChat 3.8)
17:09:36 danse-nr3_ joins (~francesco@151.43.246.222)
17:21:58 titibandit joins (~titibandi@user/titibandit)
17:24:39 × CAT_S quits (apic@brezn3.muc.ccc.de) (Ping timeout: 255 seconds)
17:25:46 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:31:27 pavonia joins (~user@user/siracusa)
17:31:30 × oac quits (~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac)
17:31:45 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
17:31:46 oac joins (~oac@72-50-214-210.fttp.usinternet.com)
17:36:21 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
17:46:45 × danse-nr3_ quits (~francesco@151.43.246.222) (Ping timeout: 240 seconds)
17:47:42 hisa38 joins (~hisa38@104-181-102-238.lightspeed.wepbfl.sbcglobal.net)
17:49:20 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Ping timeout: 240 seconds)
17:51:13 × jrm quits (~jrm@user/jrm) (Server closed connection)
17:51:30 jrm joins (~jrm@user/jrm)
17:52:03 cafkafk joins (~cafkafk@fsf/member/cafkafk)
17:53:56 × raym quits (~ray@user/raym) (Ping timeout: 260 seconds)
17:55:37 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
17:57:16 kritty joins (~crumb@c-76-155-235-153.hsd1.co.comcast.net)
17:57:38 nitrix joins (~nitrix@user/nitrix)
17:57:42 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Quit: WeeChat 3.6)
18:02:00 laxmik joins (~laxmik@2a01:c23:903b:ff00:542e:56dc:fc4:bc71)
18:03:09 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
18:06:29 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
18:06:30 <kritty> the macro-abusing C programmer in me might be showing, but is there a better way to create enums with *explicit* correspondance to Int? (https://paste.tomsmeding.com/rarFWFBR)
18:08:38 <kritty> this is going to be used to represent opcodes that have gaps (unused ints between used values) so i didn't want to derive Enum :(
18:09:38 __monty__ joins (~toonn@user/toonn)
18:09:53 <EvanR> my reaction to that is writing to and from Int explicitly is a better way xD
18:10:41 <kritty> lmfao absolutely. this is the best i could come up with. probably not using it in this state lol
18:11:50 × oac quits (~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac)
18:12:24 oac__ joins (~oac@72-50-214-210.fttp.usinternet.com)
18:17:31 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
18:18:57 <mauke> I'd say that's not an enum in the haskell sense, so I wouldn't provide an Enum instance
18:21:49 <kritty> oh god, you're right. `succ x` could be an error while `succ (succ x)` wouldn't. i need sleep.
18:22:22 <mauke> sleep (sleep x)
18:23:37 cafkafk joins (~cafkafk@fsf/member/cafkafk)
18:23:37 <geekosaur> I can't even see why you'd want it to be a Haskell enum
18:23:50 <geekosaur> C enum, sure, but C enums aren't Haskell enums
18:24:26 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
18:26:44 dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net)
18:30:59 <monochrom> I had great fun telling students about C enum being fake enum.
18:31:25 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
18:31:42 <mauke> "enum" is the keyword used to declare constants in C
18:31:59 <mauke> for example: enum { BUF_SIZE = 1024 };
18:32:08 <monochrom> enum e1 {X, Y}; enum e2 {A, B}; enum e1 v1 = A; enum e2 v2 = X; enum e1 i = 10000;
18:33:15 <monochrom> And then I went on to typedef enum e1 e2; typedef enum e2 e1; But that's for another day. :)
18:33:34 <Cale> Haskell's Enum should also be two classes though.
18:33:56 <Cale> Putting succ and pred in with the functions that interpret the special list syntaxes is a bit weird.
18:34:44 <kritty> circular Enums >:3
18:39:35 × smalltalkman quits (uid545680@2a03:5180:f:4::8:5390) (Quit: Connection closed for inactivity)
18:40:46 <chromoblob> > [()..]
18:40:48 <lambdabot> [()]
18:40:57 <chromoblob> > [(),()..]
18:40:58 <lambdabot> [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),...
18:41:30 × notzmv quits (~zmv@user/notzmv) (Read error: Connection reset by peer)
18:42:09 <chromoblob> > [False..]
18:42:10 <lambdabot> <hint>:1:9: error: parse error on input ‘]’
18:42:29 <monochrom> You probably need a space between False and ..
18:42:50 <monochrom> lest it means module False operator .
18:43:26 <chromoblob> oh
18:43:28 <mauke> > [Prelude.False..]
18:43:28 <chromoblob> > [False ..]
18:43:29 <lambdabot> <hint>:1:17: error: parse error on input ‘]’
18:43:29 <lambdabot> [False,True]
18:43:37 <chromoblob> > [False,True ..]
18:43:37 <mauke> this would've worked in Haskell 98
18:43:38 <lambdabot> [False,True]
18:44:26 × ripspin quits (~chatzilla@1.145.195.123) (Remote host closed the connection)
18:44:49 <chromoblob> > [True,False ..]
18:44:50 <lambdabot> [True,False]
18:45:12 <Rembane> arrowhead: No worries. Good luck! :)
18:45:58 <mauke> enum Boolean { TRUE, FALSE, FILE_NOT_FOUND };
18:47:25 <EvanR> that's what I immediately though of when kritty's enum consisted of numbers 0, 1, and 3
18:54:56 × titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection)
18:57:52 <laxmik> instance Enum Void where {fromEnum = absurd; toEnum _ = undefined }
18:58:32 <EvanR> toEnum = 1/0
19:00:42 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
19:00:57 gurkenglas joins (~user@dynamic-046-114-177-119.46.114.pool.telefonica.de)
19:04:09 emergence joins (emergence@2607:5300:60:5910:dcad:beff:feef:5bc)
19:06:03 <[exa]> merijn jean-paul[m] hpc: thx for the docker hints; I unfortunately have to fit into docker infrastructure. In the end an intermediate image has won it
19:10:18 jneira[m] joins (~jneiramat@2001:470:69fc:105::d729)
19:10:24 × laxmik quits (~laxmik@2a01:c23:903b:ff00:542e:56dc:fc4:bc71) (Quit: Client closed)
19:11:58 laxmik joins (~laxmik@2a01:c23:903b:ff00:542e:56dc:fc4:bc71)
19:12:36 × kritty quits (~crumb@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Leaving)
19:13:22 <[exa]> oh actually
19:13:31 <[exa]> https://github.com/haskell/cabal/issues/7416#issuecomment-851389809
19:13:44 <[exa]> this does it.
19:18:42 notzmv joins (~zmv@user/notzmv)
19:20:43 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
19:21:47 ft joins (~ft@p508dbdef.dip0.t-ipconnect.de)
19:25:32 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
19:27:33 × kimiamania6 quits (~65804703@user/kimiamania) (Server closed connection)
19:27:55 kimiamania6 joins (~65804703@user/kimiamania)
19:28:10 <chromoblob> laxmik: what should enumFrom and friends return, empty or non-empty list?
19:28:39 <chromoblob> for Void
19:29:49 <EvanR> a non-empty list of Void sounds wrong very wrong
19:30:28 <laxmik> enumFrom and friends need a Void, which cannot be provided..
19:33:40 <chromoblob> oh, so no list at all
19:34:02 <chromoblob> but maybe it could be empty list
19:34:41 ai5lk joins (~ai5lk@209-188-121-236.taosnet.com)
19:34:45 <EvanR> it could be anything because absurd
19:35:40 <monochrom> An empty list sounds fine.
19:36:52 <monochrom> But Void -> Whatever allows you to do whatever. This applies to Void -> [Void] too.
19:36:59 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
19:37:14 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
19:37:56 <monochrom> I wouldn't mind if Void meant "infinite information" so enumFrom would give an infinite list of undefineds.
19:40:08 <ncf> ?
19:41:14 <EvanR> like negative infinite temperature?
19:41:31 <mauke> :t absurd
19:41:32 <lambdabot> Void -> a
19:41:36 <mauke> looks infinite to me
19:42:13 <EvanR> or is this the same abuse as 'finite means non-zero'
19:42:27 <EvanR> i.e. infinite = zero
19:42:38 <monochrom> Consider [Shannon's] information theory.
19:42:43 cheater joins (~Username@user/cheater)
19:43:09 <monochrom> closer to impossible = more information
19:43:54 <monochrom> And yeah since Void->a allows you to extract any type from Void, that's infinite information too intuitively.
19:44:07 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Read error: Connection reset by peer)
19:44:26 <monochrom> In fact any value too for whichever type you choose.
19:44:29 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
19:44:43 <EvanR> - log (n / N)
19:44:49 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
19:45:03 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
19:45:31 <ncf> i mean sure but i'd expect enumFrom to yield total elements
19:46:11 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
19:46:11 allbery_b joins (~geekosaur@xmonad/geekosaur)
19:46:15 allbery_b is now known as geekosaur
19:47:30 <probie> ncf: Why? You've already somehow managed to get a `Void`.
19:47:36 <monochrom> I expect undefined to beget more undefineds.
19:48:43 <EvanR> it's better for errors to be noticed as soon as possible so they need to spread explosively!
19:48:51 <probie> Personally, I'd be inclined to go with `enumFrom = repeat` for `Void`
19:48:55 <EvanR> detonational semantics
19:49:05 <monochrom> Alternatively but equivalently, if v::Void is total, then vacuously absurd v :: Int is total, and absurd v = 1 and absurd v = 0 are both totally true too. >:)
19:49:36 × carbolymer quits (~carbolyme@dropacid.net) (Server closed connection)
19:49:45 carbolymer joins (~carbolyme@dropacid.net)
19:49:52 <ncf> probie: oh yeah
19:50:22 <ncf> i agree then, i was thinking of enumFrom :: Enum a => [a] for some reason
19:51:59 <probie> I don't think it really matters - one hopes that any code that has a `Void` in it, is never actually run
19:52:27 <EvanR> why are we implementing Enum for Void anyway
19:52:51 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
19:53:07 <EvanR> because we 'can' ?
19:53:12 <laxmik>  for Void of reasons
19:53:18 <probie> Can we have an unlifted Void?
19:54:23 <probie> I guess it'd be less useful, since you wouldn't be able to do things like `IO Void`
19:55:03 <monochrom> haha Void of reasons
19:55:31 <monochrom> Um an unlifted Void would be infinitely useful! Remember? >:)
19:56:03 <probie> actually, I take that back - it wouldn't be less useful, it would be useless
19:56:23 <EvanR> isn't unlifted Void what we have in Idris and that's the point
19:56:35 <monochrom> If there were an unlifted Void, then I would be able to extract new homework questions from it! That's how useful it would be. If only...
19:57:13 <monochrom> OK I mean if unlifted Void had a value.
20:03:30 × tessier_ quits (~treed@ip72-197-145-89.sd.sd.cox.net) (Ping timeout: 255 seconds)
20:03:50 Pickchea joins (~private@user/pickchea)
20:05:19 tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com)
20:10:30 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
20:10:30 <laxmik> i'd say that unlifted Void has fewer (theoretical) quirks then lifted one. For the lifted one, one can give an 'undefined' and pattern match on it, if one doesn't look into it..
20:11:58 <mauke> Void#
20:12:10 × oac__ quits (~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac__)
20:12:42 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
20:13:02 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
20:21:04 mauke_ joins (~mauke@user/mauke)
20:22:05 × joeyh_ quits (~joeyh@kitenet.net) (Ping timeout: 240 seconds)
20:22:17 joeyh joins (joeyh@2600:3c03::f03c:91ff:fe73:b0d2)
20:22:22 × laxmik quits (~laxmik@2a01:c23:903b:ff00:542e:56dc:fc4:bc71) (Quit: laxmik)
20:22:25 × mauke quits (~mauke@user/mauke) (Ping timeout: 240 seconds)
20:22:25 mauke_ is now known as mauke
20:28:17 kuribas joins (~user@ptr-17d51eok8qyevk6ux0s.18120a2.ip6.access.telenet.be)
20:29:24 <kuribas> Is there an applicative law that "fst <$> liftA2 (,) a b" = a ?
20:29:31 oac__ joins (~oac@72-50-214-210.fttp.usinternet.com)
20:29:32 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
20:30:00 <kuribas> hmm, I suppose not if they perform a side-effect...
20:30:08 <kuribas> Is there a structure that has this law?
20:33:19 × trev quits (~trev@user/trev) (Quit: trev)
20:33:31 <kuribas> > fst <$> liftA2 (,) [1, 3] [2, 4, 5]
20:33:33 <lambdabot> [1,1,1,3,3,3]
20:35:31 <probie> do you mean `fst <$> liftA2 (,) a b = pure a` as a law?
20:36:03 <chromoblob> not "pure a", just "a"
20:36:27 <chromoblob> a :: f a
20:36:35 <ncf> some sort of lazy applicative
20:36:58 <probie> You're right (the sun is yet to rise and I'm still half-asleep)
20:37:14 <kuribas> An applicative without effects?
20:37:27 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
20:37:35 <EvanR> the Identity applicative
20:37:40 <kuribas> fst <$> liftA2 (,) a b = unEffect a
20:37:54 <ncf> or at least effects that are tied to the values, like in lazy IO
20:38:11 <chromoblob> there could be an effect, only "always left" one
20:38:19 <probie> > fst <$> liftA2 (,) (ZipList [1,3]) (ZipList [2,4,5])
20:38:21 <lambdabot> ZipList {getZipList = [1,3]}
20:38:40 <ncf> > snd <$> liftA2 (,) (ZipList [1,3]) (ZipList [2,4,5])
20:38:41 <lambdabot> ZipList {getZipList = [2,4]}
20:38:52 <ncf> presumably you'd also want the symmetric law snd <$> liftA2 (,) a b = b
20:38:59 <kuribas> yes
20:39:13 <kuribas> I have something like "time -> val"
20:40:15 <kuribas> > fst <$> liftA2 (,) (+ 2) (*3)
20:40:17 <lambdabot> error:
20:40:17 <lambdabot> • Overlapping instances for Show (Integer -> Integer)
20:40:17 <lambdabot> arising from a use of ‘show_M59024113475167700508’
20:40:27 <kuribas> > (fst <$> liftA2 (,) (+ 2) (*3)) 5
20:40:28 <lambdabot> 7
20:40:37 <kuribas> > (snd <$> liftA2 (,) (+ 2) (*3)) 5
20:40:38 <lambdabot> 15
20:42:49 <kuribas> hmm https://hackage.haskell.org/package/TypeCompose-0.8.0/docs/Data-Zip.html#t:Unzip
20:43:51 <chromoblob> Hoogle cannot into text encoding
20:43:57 <tomsmeding> iirc a monad is called commutative if 'a >>= \x -> b >>= \y -> f x y' = 'b >>= \y -> a >>= \x -> f x y'
20:44:24 <chromoblob> at top there is text input with query, then drop-down menu and Search button
20:44:25 <tomsmeding> surely there is some other relevant term for a monad where 'a >>= \x -> E' = 'E' if x is not free in E
20:44:30 <chromoblob> i looked into the drop-down menu
20:44:49 <chromoblob> some author names are garbled, where characters are not ASCII
20:45:46 <tomsmeding> chromoblob: author:fix-whitespace-was-originally-written-by-Nils-Anders-Danielsson-as-part-of-Agda-2-with-contributions-from-Ulf-Norell
20:46:28 <chromoblob> hehe
20:47:15 <tomsmeding> kuribas: the terms seems to be an "affine monad"
20:47:27 <tomsmeding> which is defined by T () ~= ()
20:47:44 <tomsmeding> () being the unit type here
20:47:59 <tomsmeding> indeed Identity () ~= (), and Reader r () ~= ()
20:48:42 <tomsmeding> and [()] ~/= (), because [()] ~= Natural
20:49:48 <ncf> very cool
20:50:12 candlestick joins (~tls@179.152.251.228)
20:50:13 <tomsmeding> I wonder how this holds up for ZipList though; though of course ZipList is not a monad, so perhaps that's why the correspondence (being "kuribas' law holds precisely for affine monads") doesn't go up there
20:51:21 <tomsmeding> so perhaps it rather is that `fst <$> liftM2 (,) a b = a` is equivalent to "the monad is affine" :p
20:52:30 × oac__ quits (~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac__)
20:52:33 <chromoblob> ohh, there is pure
20:52:41 <chromoblob> so no "left effect"
20:52:50 oac joins (~oac@72-50-214-210.fttp.usinternet.com)
20:53:00 candlestick parts (~tls@179.152.251.228) ()
20:53:09 <kuribas> and Set
20:53:10 <ncf> yeah, nlab claims that affineness is equivalent to (fmap fst &&& fmap snd) (liftM2 (,) a b) = (a, b)
20:53:29 <ncf> which is exactly kuribas's condition
20:53:52 <kuribas> right, thanks!
20:54:05 <tomsmeding> aside from Identity and Reader, there are also other, highly nontrivial affine monads such as https://lazyppl.bitbucket.io/
20:54:23 <EvanR> chromoblob, unamerican encoding reported
20:54:48 <tomsmeding> ncf: cool!
20:55:00 <tomsmeding> didn't read that far on the surprisingly short nlab page :p
20:56:07 <tomsmeding> ncf: what does nlab mean with that π?
20:56:07 <chromoblob> doesn't AlwaysLeft k work where data AlwaysLeft k a = AlwaysLeft (Maybe k) a; pure = AlwaysLeft Nothing; AlwaysLeft Nothing f <*> AlwaysLeft k a = AlwaysLeft k (f a); AlwaysLeft k f <*> AlwaysLeft _ a = AlwaysLeft k (f a) ?
20:56:14 <ncf> tomsmeding: projections, fst and snd
20:56:25 Buliarous joins (~gypsydang@46.232.210.139)
20:56:27 <tomsmeding> ncf: but, like, then I would have expected π1 and π2
20:56:34 <ncf> that would be clearer
20:56:36 <ncf> i can edit it
20:56:40 <tomsmeding> lol
20:56:54 <EvanR> the side is obvious from context:tm:
20:57:00 <ncf> done
20:57:12 <tomsmeding> yay!
20:57:45 <tomsmeding> thanks :)
20:58:50 <ncf> chromoblob: snd <$> liftA2 (,) (AlwaysLeft (Just 1) a) (AlwaysLeft (Just 2) a) = AlwaysLeft (Just 1) a, i think?
20:59:29 <tomsmeding> right, so you need both the fst part and the snd part of the law
21:00:17 <ncf> (additionally your pure isn't an isomorphism, though i don't know if that equivalence maps well to the applicative case)
21:01:04 <chromoblob> isn't isomorphism - so what
21:01:48 <ncf> in the case of affine monads, an equivalent condition is that pure @() :: () -> m () is an isomorphism
21:01:59 <ncf> i.e. "no value, no effect"
21:02:44 <tomsmeding> ncf: chromoblob's example was intended to be a counterexample: one that does satisfy kuribas' law but where 'pure' is _not_ an isomorphism
21:02:50 <tomsmeding> but it satisfies only the first half of the law
21:03:08 <chromoblob> yeah, i missed kuribas' reply "yeah" to the "snd" law
21:03:37 <tomsmeding> still it's a good example, showing that you need the full strength of the law
21:04:33 × fendor quits (~fendor@2a02:8388:1640:be00:7aca:a77a:4a28:631a) (Remote host closed the connection)
21:05:36 <tomsmeding> ah re ZipList: doesn't satisfy the law
21:05:55 <tomsmeding> > fst <$> liftA2 (,) (ZipList [1,2,6]) (ZipList [3,4])
21:05:57 <lambdabot> ZipList {getZipList = [1,2]}
21:06:12 <tomsmeding> holds for applicatives so far :)
21:06:48 <tomsmeding> oh you already saw that
21:07:19 × taupiqueur2 quits (~taupiqueu@2a02:842a:8180:4601:95a3:46c4:9fe7:ffd7) (Quit: WeeChat 3.8)
21:08:09 <chromoblob> Some functors support an implementation of liftA2 that is more efficient than the default one. ... This became a typeclass method in 4.10.0.0.
21:08:13 <chromoblob> i missed that
21:08:42 <chromoblob> but what about liftA∞?
21:08:45 × dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 268 seconds)
21:08:56 × cross quits (~cross@spitfire.i.gajendra.net) (Server closed connection)
21:09:28 cross joins (~cross@spitfire.i.gajendra.net)
21:11:20 <ncf> sequenceA?
21:11:43 nitrix parts (~nitrix@user/nitrix) (Leaving)
21:12:01 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
21:13:57 × michalz quits (~michalz@185.246.207.205) (Remote host closed the connection)
21:13:57 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
21:14:06 <ijqq_> is there a way to have multi-line strings without needed to backslash at the end? i saw there is a language extension quasi quotes but it seems you need to download some package to actually use it?
21:15:03 × Errdonald quits (~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8) (Read error: Connection reset by peer)
21:15:48 <sm> yes, there are several packages like that but you have to require/install them
21:16:28 <sm> the other way, that's built in, is... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/eda936b26db4c3bee9138ddc7cbef6480122d3da>)
21:17:48 <chromoblob> with unlines, instead of backslashes you need quotes and commas...
21:18:45 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
21:19:42 <ijqq_> ah okay. in that case i will use a list with unlines i think
21:19:54 gentauro joins (~gentauro@user/gentauro)
21:20:00 <ijqq_> oh hi chromo, how's it going?
21:21:23 <chromoblob> please give the code which you questioned yesterday whether it is idiomatic
21:21:32 <chromoblob> probably you gave a link, i missed it
21:22:16 <chromoblob> ijqq_: note that unlines inserts a newline between elements of the list, use concat instead if you don't want them
21:22:55 <ijqq_> okay sure, here is what i have so far
21:22:56 <ijqq_> http://sprunge.us/A88qZE
21:23:20 <ijqq_> i think it is just about fonished for the tokenising, now i will write a few tests to check it works and then i can move to the next sectino of the book
21:25:53 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
21:26:06 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
21:26:16 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds)
21:26:33 × adium quits (adium@user/adium) (Server closed connection)
21:26:37 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
21:26:49 adium joins (adium@user/adium)
21:35:38 <ijqq_> oops there was a type in isIdentifier, it's mean to be || c == '_' instead of c == ' '
21:35:43 <ijqq_> typo*
21:40:50 <chromoblob> yeah, your code appears as fine functional code, also seems correct
21:42:00 <EvanR> if it's correct it's good. If it's functional it's perfect
21:44:08 <ijqq_> okay i added some example at the bottom too
21:44:10 <ijqq_> http://sprunge.us/2JNF1a
21:44:34 <ijqq_> well that's good to hear, thank you for taking a look . now on to the next chapter
21:45:46 × hnOsmium0001 quits (~hnosm@user/hnOsmium0001) (Server closed connection)
21:46:13 hnOsmium0001 joins (~hnosm@user/hnOsmium0001)
21:47:41 × zaidhaan quits (~zai@2001:f40:960:1c54:3c0f:370:d2d1:4fb9) (Quit: WeeChat 3.8)
21:50:28 reach joins (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c)
21:55:32 mz_ joins (~mz@190.15.90.11)
22:07:50 × oac quits (~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac)
22:10:44 × acidjnk quits (~acidjnk@p200300d6e7072f92b0f51e98686b2908.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
22:12:26 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
22:16:44 × ai5lk quits (~ai5lk@209-188-121-236.taosnet.com) (Quit: WeeChat 3.8)
22:22:59 × reach quits (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c) (Ping timeout: 240 seconds)
22:25:23 pat67 joins (~pat@45.88.220.221)
22:26:13 user2 joins (~user@103.206.114.124)
22:26:25 user2 is now known as wns
22:30:49 <pat67> I was looking at the documention for the manyTill function in Data.Attoparsec.ByteString and noticed that it mentions that the use of overlapping parsers in the simpleComment example is not very efficient because it would cause a lot of backtracking. If that is the case, what would be an efficient version of that same parser?
22:45:17 oac joins (~oac@72-50-214-210.fttp.usinternet.com)
22:45:45 × oac quits (~oac@72-50-214-210.fttp.usinternet.com) (Remote host closed the connection)
22:47:00 reach joins (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c)
22:54:00 × reach quits (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c) (Ping timeout: 240 seconds)
22:57:05 <mauke> in regex terms, you could try <!--[^-]*-([^-]+-)*-+([^-]+-([^-]+-)*)*->
22:57:28 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
22:59:12 <mauke> I mean, I haven't tried it, but the crucial part is probably implementing [^-]* and [^-]+ as takeWhile/takeWhile1 ('-' /=)
22:59:39 <mauke> alternatively, encode it as a state machien for scan
23:00:21 <mauke> of course, this is all highly theoretical because real HTML comment syntax doesn't work like that
23:01:38 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:02:02 <EvanR> I can't remember if the edkmett monoidal parser video brilliantly solved parsing of comments or tossed the possibility of comments out entirely
23:02:52 jinsun joins (~jinsun@user/jinsun)
23:08:18 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
23:10:48 <mauke> https://github.com/mauke/HTML-Blitz/blob/main/lib/HTML/Blitz/Parser.pm#L225-L263 here's how I parse HTML comments
23:11:04 <mauke> translation to (efficient) Haskell is left as an exercise for the reader
23:15:30 × wns quits (~user@103.206.114.124) (Quit: WeeChat 3.8)
23:16:03 reach joins (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c)
23:19:43 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal)
23:20:12 <ijqq_> im now very confused and would appreciate any help. so have read the section parsing expressions (https://craftinginterpreters.com/parsing-expressions.html#recursive-descent-parsing here just a bit above section 6.2) and so now to convert that to haskell. to make a tree surely i just need to implement that and then it will form the syntax tree as it's recursive but im struggling to implement the data definitions for it.
23:20:12 <ijqq_> http://sprunge.us/lNkwBi here at the end is what i have so far but I think that's wrong. first of all, now in the commented out data Term ... I can't use Minus as it's already been used as the constructor in unary. also have defined everything again not reusing anything from my tokens e.g. saying . any suggestions?
23:20:55 <ijqq_> I thought i understood how to use data yesterday i get the differernce bewteen the constructors now but still i am unable to write it
23:21:18 <ijqq_> i think i am doing something completetely wrong?
23:21:58 × mei quits (~mei@user/mei) (Remote host closed the connection)
23:22:18 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
23:23:07 × reach quits (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c) (Remote host closed the connection)
23:23:30 reach joins (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c)
23:24:24 mei joins (~mei@user/mei)
23:25:39 × mncheckm quits (~mncheck@193.224.205.254) (Ping timeout: 268 seconds)
23:26:59 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
23:27:21 smalltalkman joins (uid545680@id-545680.hampstead.irccloud.com)
23:28:21 <mauke> oh, your expression type mirrors the structure of a naive parser
23:28:27 <mauke> it doesn't have to!
23:29:06 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
23:29:10 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
23:29:12 × gurkenglas quits (~user@dynamic-046-114-177-119.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
23:29:34 <segfaultfizzbuzz> are commercial compilers of significance written in haskell?
23:30:00 <mauke> data Expression = ExprBinary BinOp Expression Expression | ExprUnary UnOp Expression | ExprValue Value
23:30:43 <mauke> I can't say much about token reuse. I generally don't use tokens
23:31:00 <mauke> I've already got a parser, so I just parse from a stream of chars
23:32:29 <mauke> that approach makes it much easier to do context-dependent lexing
23:33:25 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
23:33:42 <mauke> (for example, in JavaScript / is both an infix operator and the start of a regex literal, depending on where you are in an expression)
23:36:39 cheater joins (~Username@user/cheater)
23:39:44 × reach quits (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c) (Remote host closed the connection)
23:40:07 reach joins (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c)
23:41:57 <c_wraith> mauke: isn't it worse in perl, where which one it is can depend on the value of a variable or something?
23:42:05 × pat67 quits (~pat@45.88.220.221) (Ping timeout: 240 seconds)
23:42:10 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
23:42:19 <mauke> wat
23:42:31 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:42:55 <EvanR> lol
23:43:08 <EvanR> the parse perl you must first parse and execute perl
23:43:13 <c_wraith> https://www.perlmonks.org/index.pl?node_id=663393
23:43:15 <EvanR> to parse*
23:43:19 <mauke> that's just lisp
23:43:31 <mauke> in that we can run arbitrary code at parse time
23:43:38 <EvanR> lisp is easily parsed without lisp
23:43:44 <EvanR> oh
23:43:52 <mauke> yeah, you try that with code that defines and uses reader macros
23:44:39 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Quit: segfaultfizzbuzz)
23:44:42 <mauke> the thing about / is that it means different things depending on whether the parser currently expects a value or an operator
23:45:23 <mauke> this syntactic context depends on the set of defined (or at least declared) functions in scope
23:45:45 <mauke> since you can run arbitrary code in the parser, you can (dynamically, randomly) define functions or not
23:46:17 pat67 joins (~pat@75.102.136.100)
23:47:34 × pat67 quits (~pat@75.102.136.100) (Read error: Connection reset by peer)
23:48:28 × mrmr quits (~mrmr@user/mrmr) (Ping timeout: 268 seconds)
23:50:25 <mauke> the perlmonks post doesn't strike me as particularly insightful
23:50:52 <mauke> if you want to hang the perl parser, all you have to do is put 'BEGIN { while (1) {} }' in your code
23:51:23 <mauke> replace 1 by solve_halting_problem() or whatever
23:51:37 mrmr joins (~mrmr@user/mrmr)
23:52:25 <mauke> that is, to me there is nothing technically challenging about parsing Perl
23:53:13 <mauke> it's just that doing so depends on dynamic state that can be modified by arbitrary embedded parse-time code
23:53:28 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
23:53:28 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
23:53:28 wroathe joins (~wroathe@user/wroathe)
23:53:49 <mauke> in other words, "parsing" perl is impossible, but in a simple and boring way
23:54:02 × wroathe quits (~wroathe@user/wroathe) (Client Quit)
23:54:06 <EvanR> are you saying that the parser would not hang on the while(1) because it cleverly recognizes that as an infinite loop lol
23:54:20 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
23:54:20 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
23:54:20 wroathe joins (~wroathe@user/wroathe)
23:54:20 <mauke> no, this isn't C++ :-)
23:58:51 × hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 255 seconds)
23:58:51 mauke_ joins (~mauke@user/mauke)
23:59:09 <mauke_> BEGIN { exec '/bin/echo', 'oops, where has my perl gone?'; } is a fun one. since we are replacing the perl interpreter by a new program while it is still parsing the code, you could argue that anything following the "}" is somehow valid Perl syntax
23:59:29 × reach quits (~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c) (Ping timeout: 240 seconds)

All times are in UTC on 2023-06-14.