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.