2023/06/14

2023-06-14 00:02:30 +0200Errdonald_(~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8)
2023-06-14 00:04:40 +0200elkcl(~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru) (Ping timeout: 255 seconds)
2023-06-14 00:05:34 +0200Errdonald(~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8) (Ping timeout: 255 seconds)
2023-06-14 00:05:39 +0200elkcl(~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru)
2023-06-14 00:06:42 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-06-14 00:07:14 +0200Pickchea(~private@user/pickchea)
2023-06-14 00:07:56 +0200mncheck(~mncheck@193.224.205.254) (Ping timeout: 240 seconds)
2023-06-14 00:10:24 +0200acidjnk(~acidjnk@p200300d6e7072f28fc9054c626dc7d9f.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-06-14 00:12:24 +0200foul_owl(~kerry@71.212.137.212)
2023-06-14 00:15:26 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-06-14 00:15:49 +0200B-J(~BenziJuni@88-149-64-165.du.xdsl.is) (Ping timeout: 250 seconds)
2023-06-14 00:16:15 +0200Luj(~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Quit: The Lounge - https://thelounge.chat)
2023-06-14 00:17:26 +0200Benzi-Junior(~BenziJuni@88-149-66-136.du.xdsl.is)
2023-06-14 00:18:21 +0200Luj(~Luj@2a01:e0a:5f9:9681:f71f:fbb2:cbdf:4da0)
2023-06-14 00:18:43 +0200mmhat(~mmh@p200300f1c702b0e8ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
2023-06-14 00:18:48 +0200thegeekinside(~thegeekin@189.217.90.138) (Read error: Connection reset by peer)
2023-06-14 00:19:00 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-06-14 00:20:24 +0200jargon(~jargon@184.101.75.235)
2023-06-14 00:20:34 +0200paddymahoney(~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) (Remote host closed the connection)
2023-06-14 00:24:54 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-06-14 00:25:31 +0200B-J(~BenziJuni@dsl-149-64-112.hive.is)
2023-06-14 00:25:44 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2023-06-14 00:26:36 +0200Benzi-Junior(~BenziJuni@88-149-66-136.du.xdsl.is) (Ping timeout: 255 seconds)
2023-06-14 00:29:21 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2023-06-14 00:34:45 +0200srk_srk
2023-06-14 00:41:27 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-06-14 00:43:09 +0200bilegeek(~bilegeek@2600:1008:b043:3798:77a9:11b8:240f:486c) (Quit: Leaving)
2023-06-14 00:49:06 +0200arrowhead(~arrowhead@cpe-74-66-76-151.nyc.res.rr.com)
2023-06-14 00:51:08 +0200dcoutts_(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds)
2023-06-14 00:54:56 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2023-06-14 00:57:20 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-06-14 00:57:41 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-06-14 00:59:36 +0200gurkenglas(~user@dynamic-046-114-182-029.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-06-14 01:00:18 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-06-14 01:01:47 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-06-14 01:09:01 +0200acidjnk(~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de)
2023-06-14 01:11:56 +0200ft(~ft@p4fc2a88b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-06-14 01:12:41 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-06-14 01:13:31 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-06-14 01:14:45 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
2023-06-14 01:17:37 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-06-14 01:20:57 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-06-14 01:22:13 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-06-14 01:26:54 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-06-14 01:28:47 +0200ft(~ft@p508dbdef.dip0.t-ipconnect.de)
2023-06-14 01:33:02 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-06-14 01:33:55 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-06-14 01:35:02 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-06-14 01:36:44 +0200 <ijqq_> I am looking at this tutorial and they have a Token class with various fields, and one of them is value which they have of type Object
2023-06-14 01:36:56 +0200 <ijqq_> How can I do something like this in Haskell?
2023-06-14 01:37:29 +0200 <Axman6> I don't understand the question, can you share the tutorial?
2023-06-14 01:37:33 +0200 <ijqq_> Like is it possible to have something like data Token = SimpleToken {kind :: TokenKind, line :: Int} | LiteralToken a {kind :: TokenKind, line :: Int, value :: a}?
2023-06-14 01:37:35 +0200 <ijqq_> Sure
2023-06-14 01:37:54 +0200AmyMalikReinhilde
2023-06-14 01:38:01 +0200 <ijqq_> https://craftinginterpreters.com/scanning.html#lexemes-and-tokens
2023-06-14 01:38:10 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2023-06-14 01:38:19 +0200 <chromoblob> ijqq_: at which moment the "a" is determined?
2023-06-14 01:38:27 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-06-14 01:38:38 +0200 <Axman6> data Token a = SimpleToken TokenKind Int | LiteralToken TokenKind Int a -- that would work
2023-06-14 01:38:41 +0200 <ncf> move the a from after LiteralToken to after Token and you have valid haskell
2023-06-14 01:38:58 +0200 <Axman6> constructors don't have type parameters, their types do
2023-06-14 01:40:27 +0200sm[i](~smi]@plaintextaccounting/sm)
2023-06-14 01:40:29 +0200 <ijqq_> Ahh, thank you
2023-06-14 01:41:26 +0200 <ijqq_> data Token a = SimpleToken {kind :: TokenKind, line :: Int} | LiteralToken {kind :: TokenKind, line :: Int, value :: a} deriving (Show)
2023-06-14 01:41:33 +0200 <ijqq_> This works too
2023-06-14 01:41:40 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-06-14 01:41:51 +0200 <ijqq_> so what is the a in data Token a?
2023-06-14 01:42:02 +0200 <ijqq_> value :: a this means that the type is a
2023-06-14 01:42:02 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-06-14 01:42:05 +0200 <Axman6> it's a type parameter
2023-06-14 01:42:19 +0200 <Axman6> it's like data Token<A> in other languages
2023-06-14 01:42:40 +0200 <ncf> same as the x in f x = x + 1
2023-06-14 01:42:56 +0200 <ijqq_> But you don't have to use it? So simlpetoken is fine
2023-06-14 01:43:05 +0200 <Axman6> data Either a b = Left a | Right b -- means you can have Left "Hello" :: Either String Int, Right 7 :: Either String Int
2023-06-14 01:43:38 +0200 <Axman6> no, you can have type parameters that don't appear in some, or even any, of the constructors (the latter usually called phantom types)
2023-06-14 01:44:59 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-06-14 01:45:25 +0200 <ijqq_> okay cool
2023-06-14 01:45:49 +0200 <chromoblob> ijqq_: you may run into problems if you attempt to use "a" as dynamic type
2023-06-14 01:46:49 +0200 <ijqq_> and is this a good way to represent the tokens? as in, for the java version the author can just use object and then have some fields potentially blank (empty strings). so i thought in haskell i should try to make different tokens types?
2023-06-14 01:47:20 +0200 <chromoblob> whenever "value" is set in a LiteralToken, the "a" in its type is set rigidly and cannot be interchanged with tokens which have different "a"
2023-06-14 01:47:24 +0200 <ijqq_> actually i think i only need StringLiteral and NumericLiteral here so I perhaps can just add those as separate token types and I don't need to make it dynamic
2023-06-14 01:47:33 +0200 <ijqq_> that would be better to do right?
2023-06-14 01:47:38 +0200 <ncf> you could perhaps merge the constructors and have value :: Maybe a
2023-06-14 01:48:17 +0200 <ijqq_> So a token such as LEFT_PARENT will jsut have value as Nothing, and a string can have value as Just "foo"?
2023-06-14 01:48:33 +0200 <chromoblob> ijqq_: what is TokenKind?
2023-06-14 01:48:39 +0200 <ijqq_> PAREN sorry*
2023-06-14 01:49:10 +0200 <ijqq_> http://sprunge.us/8Con2F here is my file
2023-06-14 01:49:23 +0200sm[i](~smi]@plaintextaccounting/sm) (Ping timeout: 245 seconds)
2023-06-14 01:49:24 +0200 <ijqq_> i am trying to follow that tutorial but write it in haskell
2023-06-14 01:49:37 +0200 <ijqq_> as you can see i am struggling a bit
2023-06-14 01:50:15 +0200 <chromoblob> so, i think you should refactor your types
2023-06-14 01:50:36 +0200 <chromoblob> note that every token has a line number, and then a kind and other data *depending on kind*
2023-06-14 01:50:55 +0200 <chromoblob> so you should create a type Token: data Token = Token { line :: Int, content :: TokenContent }
2023-06-14 01:51:18 +0200 <chromoblob> then data type TokenContent has exactly one constructor for each token kind
2023-06-14 01:51:38 +0200 <chromoblob> its String constructor should have field of type String
2023-06-14 01:51:50 +0200 <chromoblob> its Number constructor should have field of type Float
2023-06-14 01:52:05 +0200 <geekosaur> Double, surely?
2023-06-14 01:52:05 +0200 <chromoblob> for Identifier, probably field of type String
2023-06-14 01:52:15 +0200 <chromoblob> and other constructors should have no fields
2023-06-14 01:52:43 +0200 <Axman6> This is one of the places where understanding the algebraic part of ADT can be useful, you can evaluate several equivalent implementations and decide which makes more sense for how you want to use it
2023-06-14 01:54:32 +0200 <Axman6> like understanding that Either a a is equivalent to (Bool,a) - which one makes more sense depends on your project
2023-06-14 01:55:43 +0200 <chromoblob> languages for other languages may not work well for Haskell in some cases
2023-06-14 01:55:48 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2023-06-14 01:55:50 +0200 <chromoblob> tutorials for other languages *
2023-06-14 01:57:42 +0200 <ijqq_> sorry chromo, I am a little confused. If I have something like data Token = Token { line :: Int, content :: TokenContent } and the data TokenContent a = StringContent { value :: a } it is asking for another argument to TokenContent
2023-06-14 01:57:52 +0200 <ijqq_> maybe I have misunderstood ?
2023-06-14 01:58:06 +0200 <geekosaur> you have misunderstood
2023-06-14 01:58:41 +0200 <geekosaur> you no longer want or need the a
2023-06-14 01:58:42 +0200mauke_(~mauke@user/mauke)
2023-06-14 01:59:01 +0200 <chromoblob> data TokenContent = LEFT_PAREN | ... | IDENTIFIER String | STRING String | NUMBER Float | AND | ...
2023-06-14 01:59:35 +0200 <ijqq_> Ohh I see what you are saying
2023-06-14 01:59:36 +0200 <ijqq_> I get it
2023-06-14 01:59:44 +0200 <ijqq_> thank you guys, you are very helpful
2023-06-14 01:59:51 +0200 <chromoblob> you may also want to group the constructors
2023-06-14 02:00:25 +0200 <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
2023-06-14 02:00:40 +0200 <chromoblob> so data TokenContent = SingleChar TokenSingleChar | TwoChars TokenTwoChars | Identifier String | String String | Number Float | Keyword Keyword | EOF
2023-06-14 02:00:59 +0200 <chromoblob> data Keyword = AND | CLASS | ... -- all keywords
2023-06-14 02:01:13 +0200 <chromoblob> data TokenSingleChar = LEFT_PAREN | ... -- all single-char tokens
2023-06-14 02:01:14 +0200Axman6wants a tattoo with an anchor, that says "Never (IEEE-754) Float"
2023-06-14 02:01:14 +0200 <chromoblob> and so on
2023-06-14 02:01:32 +0200 <Axman6> Damn, that's the best idea for a tattoo I've ever had
2023-06-14 02:01:53 +0200 <geekosaur> I still want my "human fuzzer" tshirt…
2023-06-14 02:02:20 +0200mauke(~mauke@user/mauke) (Ping timeout: 260 seconds)
2023-06-14 02:02:21 +0200mauke_mauke
2023-06-14 02:05:05 +0200 <jackdk> Axman6: make it two crossed anchors and don't mention the IEEE stuff and you'll have a QFPL-tier inside joke
2023-06-14 02:09:07 +0200 <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?
2023-06-14 02:11:12 +0200 <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.
2023-06-14 02:11:20 +0200 <jackdk> Also, are you doing Lox in Haskell?
2023-06-14 02:11:41 +0200 <ijqq_> Ah okay, thank you, I think i just about understood that now
2023-06-14 02:11:57 +0200 <ijqq_> Yes, I want to create my own programming language so I thought to do this
2023-06-14 02:12:02 +0200 <ijqq_> And I wanted to learn haskell too.
2023-06-14 02:12:13 +0200 <jackdk> Yeah, I worked through the C half of the book last month. It was really fun.
2023-06-14 02:12:29 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-06-14 02:12:31 +0200 <ijqq_> Cool! it looks really intersting
2023-06-14 02:12:40 +0200 <ijqq_> can't wait to hopefully get to the later parts after this
2023-06-14 02:13:17 +0200 <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.
2023-06-14 02:14:21 +0200 <ijqq_> ah okay. Yes so far i have been having some confusion between what and where the constructors and types go
2023-06-14 02:14:33 +0200delYsid(~user@84-115-138-74.cable.dynamic.surfer.at) (ERC 5.6-git (IRC client for GNU Emacs 30.0.50))
2023-06-14 02:16:36 +0200bramhaag(~bramhaag@134.195.121.39) (Server closed connection)
2023-06-14 02:16:49 +0200bramhaag(~bramhaag@134.195.121.39)
2023-06-14 02:18:46 +0200 <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
2023-06-14 02:20:03 +0200 <chromoblob> also i think EOF isn't a keyword, it's a marker of end of file
2023-06-14 02:20:33 +0200 <chromoblob> also you might not need it at all
2023-06-14 02:22:53 +0200 <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
2023-06-14 02:23:42 +0200emergence(thelounge@2607:5300:60:5910:dcad:beff:feef:5bc) (Remote host closed the connection)
2023-06-14 02:24:15 +0200emergence(thelounge@2607:5300:60:5910:dcad:beff:feef:5bc)
2023-06-14 02:25:00 +0200ijqq(uid603979@id-603979.helmsley.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 02:25:00 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 240 seconds)
2023-06-14 02:25:00 +0200ijqq_ijqq
2023-06-14 02:25:50 +0200ijqq_(uid603979@id-603979.helmsley.irccloud.com)
2023-06-14 02:26:03 +0200[_](~itchyjunk@user/itchyjunk/x-7353470)
2023-06-14 02:26:14 +0200 <jackdk> chromoblob: yeah I think I'd move EOF from Keyword into TokenContent
2023-06-14 02:26:27 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-06-14 02:26:30 +0200talismanick(~user@2601:204:ef01:8ca0::a680) (Ping timeout: 240 seconds)
2023-06-14 02:27:04 +0200talismanick(~user@2601:204:ef01:8ca0::a680)
2023-06-14 02:29:03 +0200[_](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-06-14 02:29:22 +0200[_](~itchyjunk@user/itchyjunk/x-7353470)
2023-06-14 02:32:04 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-06-14 02:34:39 +0200[_](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-06-14 02:35:19 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-06-14 02:35:19 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-06-14 02:35:19 +0200wroathe(~wroathe@user/wroathe)
2023-06-14 02:36:05 +0200wroathe(~wroathe@user/wroathe) (Client Quit)
2023-06-14 02:36:23 +0200wroathe(~wroathe@user/wroathe)
2023-06-14 02:37:25 +0200 <arrowhead> Rembane: hey
2023-06-14 02:37:40 +0200 <arrowhead> Rembane: thank you for your help, I saw the file you made for me, it is being very helpful to me
2023-06-14 02:37:43 +0200 <arrowhead> let me show you
2023-06-14 02:38:44 +0200 <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.
2023-06-14 02:39:18 +0200 <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.
2023-06-14 02:39:27 +0200 <arrowhead> That was my confusion and thank you very much for you help.
2023-06-14 02:39:39 +0200 <dibblego> box metaphors regularly cause confusion
2023-06-14 02:41:21 +0200 <arrowhead> in this context, it is a programming language that is being coded, so I am really using the IORef as a boxed value
2023-06-14 02:41:43 +0200 <dibblego> expect more confusion :)
2023-06-14 02:42:44 +0200 <arrowhead> dibblego: :)
2023-06-14 02:43:08 +0200 <arrowhead> dibblego: I am giving Haskell a good go as an imperative language, porting a toy language I made
2023-06-14 02:43:43 +0200 <arrowhead> I want to get fluent in the IO mutable functions
2023-06-14 02:43:50 +0200 <dibblego> I would not expect IORef to appear in that task
2023-06-14 02:44:10 +0200 <arrowhead> Why not?
2023-06-14 02:44:46 +0200 <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.
2023-06-14 02:45:28 +0200 <geekosaur> compilers, or interpreters?
2023-06-14 02:45:42 +0200 <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?
2023-06-14 02:46:15 +0200 <dibblego> both
2023-06-14 02:46:29 +0200 <geekosaur> you're not doing it, you're generating code that will do it at runtime
2023-06-14 02:46:42 +0200 <ijqq> thank you chromo
2023-06-14 02:47:29 +0200 <arrowhead> I think for you to model mutable variables you would need IORef, if not an equivalent such as STRef interpreted by IO
2023-06-14 02:47:32 +0200 <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
2023-06-14 02:47:58 +0200 <arrowhead> dibblego: are you sure you can model a mutable variable without using IORef?
2023-06-14 02:48:17 +0200 <dibblego> No I am not sure. But where did "mutable variable" come into this?
2023-06-14 02:49:10 +0200 <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."
2023-06-14 02:49:31 +0200 <arrowhead> Any language that has mutable variables I believe would have forced you to use IORef or equivalent.
2023-06-14 02:49:54 +0200 <arrowhead> So I mentioned it to push back against that assertion that so many languages can be written without IORef.
2023-06-14 02:50:01 +0200 <geekosaur> only if you're interpreting it
2023-06-14 02:50:03 +0200 <pyrex> <geekosaur> compilers, or interpreters?
2023-06-14 02:50:28 +0200 <geekosaur> if you are compiling then you are generating code. the generated code needs to deal with mutable variables; code generation itself does not
2023-06-14 02:50:36 +0200 <arrowhead> Right, interpreters. For compilers, everything can disappear with CPS.
2023-06-14 02:50:51 +0200 <arrowhead> geekosaur: of course.
2023-06-14 02:51:04 +0200 <pyrex> you don't even need CPS! nothing stops you from outputting a mov instruction
2023-06-14 02:51:21 +0200 <arrowhead> CPS is more general and it models everything. It is the universal abstraction.
2023-06-14 02:51:35 +0200 <pyrex> can you show me how to balance my checkbooks with CPS?
2023-06-14 02:51:58 +0200 <arrowhead> If by that you mean "can you show me how to do mutation with CPS" Oleg Kiselyov has shows that.
2023-06-14 02:52:10 +0200 <arrowhead> shwon*
2023-06-14 02:52:35 +0200 <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
2023-06-14 02:53:00 +0200 <pyrex> i am sure CPS also will not help me figure out the convex hull of a set of points
2023-06-14 02:53:08 +0200 <arrowhead> Hmm, I was referencing its mathematical role.
2023-06-14 02:53:37 +0200 <arrowhead> pyrex: it can give you all instructions by which to do that
2023-06-14 02:53:42 +0200 <arrowhead> that's the point.
2023-06-14 02:54:36 +0200 <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)"
2023-06-14 02:55:02 +0200 <pyrex> i think that is useful but everything i described is a concern from the codegen stage of a particular kind of compiler
2023-06-14 02:55:31 +0200 <arrowhead> Right, the fun stage
2023-06-14 02:55:48 +0200 <arrowhead> It also allows you not to collect garbage
2023-06-14 02:55:51 +0200 <arrowhead> it's miraculous
2023-06-14 02:56:02 +0200 <pyrex> it does? that claim is surprising to me
2023-06-14 02:56:02 +0200 <arrowhead> cheap call/cc, costless function calls
2023-06-14 02:56:11 +0200 <arrowhead> pyrex: see Cheney on the MTA
2023-06-14 02:57:07 +0200 <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
2023-06-14 02:57:18 +0200 <arrowhead> gets amortized pretty nicely across almost-never-happening
2023-06-14 02:57:27 +0200 <chromoblob> oh no...
2023-06-14 02:58:31 +0200 <chromoblob> ... that IS gc.
2023-06-14 02:58:32 +0200 <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
2023-06-14 02:59:00 +0200foul_owl(~kerry@71.212.137.212) (Quit: WeeChat 2.3)
2023-06-14 02:59:20 +0200 <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
2023-06-14 02:59:51 +0200 <pyrex> yeah, after reading the paper i disagree that cheney's design is avoiding gc
2023-06-14 02:59:52 +0200 <arrowhead> If someone could teach me... oh and there's a "inside a hashtable" in the middle of that path along the way
2023-06-14 03:00:03 +0200tessier(~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 255 seconds)
2023-06-14 03:00:10 +0200 <arrowhead> pyrex: okay, it's one GC per full stack
2023-06-14 03:00:20 +0200 <arrowhead> a stack almost never fills so... almost never.
2023-06-14 03:00:44 +0200 <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
2023-06-14 03:00:47 +0200 <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?"
2023-06-14 03:00:50 +0200 <chromoblob> arrowhead: you are going to allow your programs eat up up to a whole stack?
2023-06-14 03:00:56 +0200foul_owl(~kerry@71.212.137.212)
2023-06-14 03:01:13 +0200 <pyrex> you just have to think about the possibility that you ran out of space on, well, entry.
2023-06-14 03:01:17 +0200 <arrowhead> jackdk: I know the former is highly optimized; my problem is the latter. I get all confused.
2023-06-14 03:01:33 +0200 <arrowhead> chromoblob: yes, everyone writing Chicken Scheme does for instance.
2023-06-14 03:01:42 +0200 <arrowhead> chromoblob: it's totally okay.
2023-06-14 03:02:01 +0200tessier(~treed@ip72-197-145-89.sd.sd.cox.net)
2023-06-14 03:02:20 +0200 <arrowhead> pyrex: that's a very theoretical concern
2023-06-14 03:02:45 +0200 <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
2023-06-14 03:02:48 +0200 <pyrex> it's a central feature of the scheme.
2023-06-14 03:03:03 +0200 <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.
2023-06-14 03:03:25 +0200 <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 ?
2023-06-14 03:04:07 +0200 <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?
2023-06-14 03:04:08 +0200 <chromoblob> arrowhead: the sawtooth graph doesn't look very efficient to me...
2023-06-14 03:04:30 +0200 <pyrex> i mean, i guess it's different in that the system degrades way worse if you attempt to make it concurrent?
2023-06-14 03:04:52 +0200 <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.
2023-06-14 03:05:07 +0200 <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"
2023-06-14 03:05:26 +0200 <pyrex> to be clear, i'm explicitly not saying this is a bad way to implement a GC
2023-06-14 03:05:28 +0200 <arrowhead> pyrex: that is above my paygrade. I am very suspicious of things that need to be solved concurrently.
2023-06-14 03:05:31 +0200 <pyrex> it just strikes me as a pretty ordinary way to implement a GC
2023-06-14 03:05:32 +0200zmt00(~zmt00@user/zmt00)
2023-06-14 03:05:47 +0200 <arrowhead> pyrex: then why do you think it's seen as radically different from all others?
2023-06-14 03:05:56 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds)
2023-06-14 03:05:56 +0200 <arrowhead> pyrex: are you perhaps a contrarian? ;)
2023-06-14 03:06:21 +0200bontaq(~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 255 seconds)
2023-06-14 03:06:32 +0200 <pyrex> i am not sure I grant the claim that it is radically different from all others!
2023-06-14 03:06:37 +0200 <pyrex> i am not sure i am a contrarian either!!
2023-06-14 03:06:42 +0200hays(rootvegeta@fsf/member/hays)
2023-06-14 03:06:49 +0200 <arrowhead> pyrex: that is very interesting to me, I appreciate your point of view
2023-06-14 03:06:49 +0200 <pyrex> to be clear: I first heard about this scheme because you talked about it
2023-06-14 03:06:54 +0200 <arrowhead> I know very little about these things
2023-06-14 03:06:59 +0200 <arrowhead> still!
2023-06-14 03:07:02 +0200 <pyrex> I then read the paper and concluded "well, this looks cool, I'm not sure this is that weird!"
2023-06-14 03:07:17 +0200 <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
2023-06-14 03:07:19 +0200 <pyrex> keep in mind I could be an uncareful reader who fails to realize how weird it actually is!!!
2023-06-14 03:07:26 +0200 <arrowhead> pyrex: chromoblob thought it was weird by asking "are you going to allow your program to fill up the stack"
2023-06-14 03:07:41 +0200 <arrowhead> pyrex: and I could be a terrible explainer
2023-06-14 03:07:50 +0200 <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
2023-06-14 03:07:56 +0200 <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.
2023-06-14 03:08:14 +0200 <arrowhead> chromoblob: that would be almost the same as another GC algorithms whose name escapes me now... meaning it would be a different thing
2023-06-14 03:08:18 +0200 <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 =(
2023-06-14 03:09:24 +0200 <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?
2023-06-14 03:09:35 +0200 <chromoblob> to be fair, i don't like most GCs...
2023-06-14 03:09:50 +0200zer0bitz_(~zer0bitz@user/zer0bitz)
2023-06-14 03:10:08 +0200 <ijqq> i feel what i wrote is a very direct conversion from java, maybe it's not very "haskelly"?
2023-06-14 03:10:11 +0200johnw_(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-06-14 03:10:57 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-06-14 03:11:00 +0200pyrex_(~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c)
2023-06-14 03:11:05 +0200 <chromoblob> anyways, filling up the stack, if stack is of moderate size or larger, is quite disturbing for me
2023-06-14 03:11:14 +0200pyrex_(~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c) (Client Quit)
2023-06-14 03:11:22 +0200cheater_(~Username@user/cheater)
2023-06-14 03:11:24 +0200Sgeo_(~Sgeo@user/sgeo)
2023-06-14 03:11:25 +0200rubin55(sid175221@hampstead.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:11:25 +0200Vajb(~Vajb@2001:999:484:a37d:e618:9886:4843:f5d8) (Ping timeout: 255 seconds)
2023-06-14 03:11:25 +0200tzh_(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2023-06-14 03:11:35 +0200pyrex_(~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c)
2023-06-14 03:11:52 +0200Angelz(Angelz@angelz.oddprotocol.org) (Ping timeout: 255 seconds)
2023-06-14 03:11:52 +0200acro(~acro@user/acro) (Ping timeout: 255 seconds)
2023-06-14 03:11:52 +0200anpad(~pandeyan@user/anpad) (Ping timeout: 255 seconds)
2023-06-14 03:11:52 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:c52d:211a:dc73:3e4a) (Ping timeout: 255 seconds)
2023-06-14 03:12:06 +0200mauke_(~mauke@user/mauke)
2023-06-14 03:12:15 +0200talisman`(~user@2601:204:ef01:8ca0::a680)
2023-06-14 03:12:19 +0200edmundnoble(sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:12:19 +0200m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 255 seconds)
2023-06-14 03:12:20 +0200img_(~img@user/img)
2023-06-14 03:12:22 +0200srk_(~sorki@user/srk)
2023-06-14 03:12:28 +0200taupiqueur1(~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net)
2023-06-14 03:12:29 +0200glguy_(~glguy@libera/staff-emeritus/glguy)
2023-06-14 03:12:31 +0200lottaquestions_(~nick@2607:fa49:503f:6d00:76c6:8180:36e3:46f2)
2023-06-14 03:12:36 +0200pyrex(~pyrex@user/pyrex) (Killed (NickServ (GHOST command used by pyrex_!~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c)))
2023-06-14 03:12:44 +0200pyrex_(~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c) (Client Quit)
2023-06-14 03:12:46 +0200remsen(ianremsen@tilde.team) (Ping timeout: 255 seconds)
2023-06-14 03:12:46 +0200lightandlight(sid135476@id-135476.helmsley.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:12:46 +0200dagit(~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (Ping timeout: 255 seconds)
2023-06-14 03:12:46 +0200cawfee(~root@2406:3003:2077:2758::babe) (Ping timeout: 255 seconds)
2023-06-14 03:12:46 +0200PotatoGim(sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:12:46 +0200raym(~ray@user/raym) (Ping timeout: 255 seconds)
2023-06-14 03:12:46 +0200glguy(~glguy@libera/staff-emeritus/glguy) (Ping timeout: 255 seconds)
2023-06-14 03:12:46 +0200bcoppens(~bartcopp@vpn2.bartcoppens.be) (Ping timeout: 255 seconds)
2023-06-14 03:12:58 +0200jargon_(~jargon@184.101.75.235)
2023-06-14 03:12:59 +0200pyrex(~pyrex@user/pyrex)
2023-06-14 03:13:07 +0200biberu\(~biberu@user/biberu)
2023-06-14 03:13:13 +0200phma_(~phma@host-67-44-208-30.hnremote.net)
2023-06-14 03:13:13 +0200heartburn(~gass@2a00:d880:3:1::b1e4:b241) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200heath1(~heath@user/heath) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200drdo(~drdo@bl8-153-185.dsl.telepac.pt) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200lottaquestions(~nick@2607:fa49:503f:6d00:9d95:486a:e095:686c) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200srk(~sorki@user/srk) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200mikko(~mikko@user/mikko) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200tom_(~tom@2a00:23c8:970c:4801:d59:645f:19cf:5a58) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200Nosrep(~Nosrep@user/nosrep) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200haritz(~hrtz@user/haritz) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200img(~img@user/img) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200sympt(~sympt@user/sympt) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200piele(~piele@tbonesteak.creativeserver.net) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200zer0bitz(~zer0bitz@user/zer0bitz) (Ping timeout: 255 seconds)
2023-06-14 03:13:13 +0200kosmikus(~kosmikus@nullzig.kosmikus.org) (Ping timeout: 255 seconds)
2023-06-14 03:13:23 +0200anpad(~pandeyan@user/anpad)
2023-06-14 03:13:29 +0200pyrexpyrex_
2023-06-14 03:13:33 +0200pyrex_pyrex
2023-06-14 03:13:40 +0200hexology(~hexology@user/hexology) (Ping timeout: 255 seconds)
2023-06-14 03:13:40 +0200arrowhea_(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
2023-06-14 03:13:40 +0200ijqq__(uid603979@id-603979.helmsley.irccloud.com)
2023-06-14 03:14:40 +0200b0o(0e4a0bf4c9@2604:bf00:561:2000::1bf) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200theesm(2cbdf4b38a@2604:bf00:561:2000::11c8) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200JoelMcCracken(5ea8252fbb@2604:bf00:561:2000::10e3) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200sm2n(ae95cb1267@user/sm2n) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200JSharp(sid4580@2a03:5180:f:2::11e4) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200Pent(sid313808@2a03:5180:f:2::4:c9d0) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200fvr(ef3e56ca8b@2604:bf00:561:2000::3c4) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200evanrelf(3addc196af@2604:bf00:561:2000::f0) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200landonf(landonf@2600:3c03::f03c:91ff:feae:da1e) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200bsima1(9d7e39c8ad@2604:bf00:561:2000::dd) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200lukec(9dfd4d094e@2604:bf00:561:2000::10e) (Ping timeout: 260 seconds)
2023-06-14 03:14:41 +0200filwisher(2e6936c793@2604:bf00:561:2000::170) (Ping timeout: 260 seconds)
2023-06-14 03:15:02 +0200phma_(~phma@host-67-44-208-30.hnremote.net) (Read error: Connection reset by peer)
2023-06-14 03:15:15 +0200jleightcap(7bc4014b62@user/jleightcap) (Ping timeout: 260 seconds)
2023-06-14 03:15:15 +0200n1essa(3d621153a5@2604:bf00:561:2000::df7) (Ping timeout: 260 seconds)
2023-06-14 03:15:16 +0200retropikzel(9d1a4f9f46@2604:bf00:561:2000::ce) (Ping timeout: 260 seconds)
2023-06-14 03:15:16 +0200ymherklotz(cb2c9cfbdd@2604:bf00:561:2000::29a) (Ping timeout: 260 seconds)
2023-06-14 03:15:16 +0200sus(1b7af6299f@user/zeromomentum) (Ping timeout: 260 seconds)
2023-06-14 03:15:16 +0200whereiseveryone(206ba86c98@2604:bf00:561:2000::2e4) (Ping timeout: 260 seconds)
2023-06-14 03:15:16 +0200ggb(a62ffbaf4f@2604:bf00:561:2000::3ac) (Ping timeout: 260 seconds)
2023-06-14 03:15:16 +0200Yumemi(~Yumemi@chamoin.net) (Ping timeout: 260 seconds)
2023-06-14 03:15:50 +0200chaitlatte0(ea29c0bb16@user/chaitlatte0) (Ping timeout: 260 seconds)
2023-06-14 03:15:51 +0200delyan(sid523379@2a03:5180:f:4::7:fc73) (Ping timeout: 260 seconds)
2023-06-14 03:15:51 +0200probie(cc0b34050a@user/probie) (Ping timeout: 260 seconds)
2023-06-14 03:15:51 +0200henrytill(e0180937c3@2604:bf00:561:2000::e8c) (Ping timeout: 260 seconds)
2023-06-14 03:15:51 +0200shreyasminocha(51fdc93eda@user/shreyasminocha) (Ping timeout: 260 seconds)
2023-06-14 03:15:51 +0200MonsoonSecrecy(f78c86e960@2604:bf00:561:2000::f99) (Ping timeout: 260 seconds)
2023-06-14 03:15:51 +0200hexeme(~hexeme@user/hexeme) (Ping timeout: 260 seconds)
2023-06-14 03:16:25 +0200jkoshy(99b9359beb@user/jkoshy) (Ping timeout: 260 seconds)
2023-06-14 03:16:25 +0200dtman34(~dtman34@2601:447:d000:93c9:f1cc:f7a5:325c:7994) (Ping timeout: 260 seconds)
2023-06-14 03:16:25 +0200jakzale(6291399afa@user/jakzale) (Ping timeout: 260 seconds)
2023-06-14 03:16:25 +0200samhh_(7569f027cf@2604:bf00:561:2000::e4) (Ping timeout: 260 seconds)
2023-06-14 03:16:25 +0200fluffyballoon(45ce440a48@2604:bf00:561:2000::e2) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200arcadewise(52968ed80d@2604:bf00:561:2000::3df) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200Ankhers(a197a332e9@2604:bf00:561:2000::2a2) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200cln_(cln@wtf.cx) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200APic(apic@apic.name) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200megaTherion(~therion@unix.io) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200xstill_(xstill@fimu/xstill) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200Clint(~Clint@user/clint) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200ames(~amelia@offtopia/offtopian/amelia) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200adamCS(~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200laman2(~laman@rego.ai) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200witcher(~witcher@wiredspace.de) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200acertain(sid470584@id-470584.hampstead.irccloud.com) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200farn__(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200manwithluck(manwithluc@hoeven.dossingday.ml) (Ping timeout: 260 seconds)
2023-06-14 03:16:26 +0200[_________](~oos95GWG@user/oos95GWG) (Ping timeout: 260 seconds)
2023-06-14 03:17:00 +0200tcard_(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 260 seconds)
2023-06-14 03:17:01 +0200lbseale(~quassel@user/ep1ctetus) (Ping timeout: 260 seconds)
2023-06-14 03:17:01 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 260 seconds)
2023-06-14 03:17:01 +0200cyphase(~cyphase@user/cyphase) (Ping timeout: 260 seconds)
2023-06-14 03:17:01 +0200hpc(~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 260 seconds)
2023-06-14 03:17:01 +0200phma(phma@2001:5b0:2172:dde8:47f2:e98f:fb8c:320e) (Ping timeout: 260 seconds)
2023-06-14 03:17:01 +0200polux(~polux@51-15-169-172.rev.poneytelecom.eu) (Ping timeout: 260 seconds)
2023-06-14 03:17:01 +0200lilata(~lilata@137.184.4.49) (Ping timeout: 260 seconds)
2023-06-14 03:17:01 +0200turlando(~turlando@user/turlando) (Ping timeout: 260 seconds)
2023-06-14 03:17:59 +0200dagi82659(~dagit@2001:558:6025:38:71c6:9d58:7252:8976)
2023-06-14 03:17:59 +0200AlexNoo_(~AlexNoo@178.34.163.88)
2023-06-14 03:18:00 +0200shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 255 seconds)
2023-06-14 03:18:00 +0200RMSBach(~guygastin@137.184.131.156) (Ping timeout: 255 seconds)
2023-06-14 03:18:00 +0200jackdk(sid373013@cssa/jackdk) (Ping timeout: 255 seconds)
2023-06-14 03:18:00 +0200haritzondo(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
2023-06-14 03:18:00 +0200ridcully(~ridcully@p57b52f2c.dip0.t-ipconnect.de)
2023-06-14 03:18:01 +0200b20n(sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200ijqq_(uid603979@id-603979.helmsley.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200euandreh(~Thunderbi@189.6.18.7) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200arrowhead(~arrowhead@cpe-74-66-76-151.nyc.res.rr.com) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200taupiqueur(~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200ridcully_(~ridcully@p57b52f2c.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200m1dnight(~christoph@78-22-4-67.access.telenet.be) (Ping timeout: 255 seconds)
2023-06-14 03:18:01 +0200red-snai-(~snail@static.151.210.203.116.clients.your-server.de)
2023-06-14 03:18:02 +0200Benzi-Junior(~BenziJuni@88-149-64-112.du.xdsl.is)
2023-06-14 03:18:02 +0200talismanick(~user@2601:204:ef01:8ca0::a680) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200mauke(~mauke@user/mauke) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200acidjnk(~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200red-snail1(~snail@static.151.210.203.116.clients.your-server.de) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200AlexNoo(~AlexNoo@178.34.163.88) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200energizer(~energizer@user/energizer) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200Adran(~adran@botters/adran) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200robobub(uid248673@id-248673.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200tritlo(sid58727@user/tritlo) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (Ping timeout: 255 seconds)
2023-06-14 03:18:02 +0200bcoppens_(~bartcopp@vpn2.bartcoppens.be)
2023-06-14 03:18:02 +0200remsen-(ianremsen@tilde.team)
2023-06-14 03:18:02 +0200kosmikus_(~kosmikus@nullzig.kosmikus.org)
2023-06-14 03:18:02 +0200Errdonald__(~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8)
2023-06-14 03:18:02 +0200edmundnoble_(sid229620@id-229620.helmsley.irccloud.com)
2023-06-14 03:18:02 +0200b20n(sid115913@id-115913.uxbridge.irccloud.com)
2023-06-14 03:18:02 +0200megaTherion_(~therion@unix.io)
2023-06-14 03:18:02 +0200SrPx_(sid108780@id-108780.uxbridge.irccloud.com)
2023-06-14 03:18:02 +0200ijqq_(uid603979@id-603979.helmsley.irccloud.com)
2023-06-14 03:18:03 +0200cawfee_(~root@2406:3003:2077:2758::babe)
2023-06-14 03:18:13 +0200AlexNoo_(~AlexNoo@178.34.163.88) (Read error: Connection reset by peer)
2023-06-14 03:18:13 +0200bcoppens_(~bartcopp@vpn2.bartcoppens.be) (Read error: Connection reset by peer)
2023-06-14 03:18:13 +0200kosmikus_(~kosmikus@nullzig.kosmikus.org) (Read error: Connection reset by peer)
2023-06-14 03:18:34 +0200laman3(~laman@rego.ai)
2023-06-14 03:18:39 +0200phma_(phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae)
2023-06-14 03:18:41 +0200cawfee_(~root@2406:3003:2077:2758::babe) (Read error: Connection reset by peer)
2023-06-14 03:19:14 +0200xff0x_(~xff0x@ai098135.d.east.v6connect.net)
2023-06-14 03:19:24 +0200bcoppens_(~bartcopp@vpn2.bartcoppens.be)
2023-06-14 03:19:34 +0200user2(~user@103.206.114.86)
2023-06-14 03:19:38 +0200wroathe_(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-06-14 03:19:53 +0200acidjnk_new(~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de)
2023-06-14 03:19:54 +0200kosmikus_(~kosmikus@nullzig.kosmikus.org)
2023-06-14 03:19:54 +0200dagi75224(~dagit@2001:558:6025:38:71c6:9d58:7252:8976)
2023-06-14 03:20:02 +0200m1dnight_(~christoph@78-22-4-67.access.telenet.be)
2023-06-14 03:20:08 +0200acro_(~acro@user/acro)
2023-06-14 03:20:11 +0200xstill_0(xstill@fimu/xstill)
2023-06-14 03:20:11 +0200wroathe(~wroathe@user/wroathe) (Killed (NickServ (GHOST command used by wroathe_!~wroathe@207-153-38-140.fttp.usinternet.com)))
2023-06-14 03:20:14 +0200Cadey(~cadey@tailscale/xe)
2023-06-14 03:20:14 +0200tom__(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2023-06-14 03:20:14 +0200080AAA5IJ(~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de)
2023-06-14 03:20:15 +0200elkcl(~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru) (Ping timeout: 240 seconds)
2023-06-14 03:20:15 +0200econo(uid147250@user/econo) (Ping timeout: 240 seconds)
2023-06-14 03:20:15 +0200wroathe_wroathe
2023-06-14 03:20:18 +0200SrPx(sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 03:20:18 +0200Alex_test(~al_test@178.34.163.88) (Ping timeout: 240 seconds)
2023-06-14 03:20:18 +0200AlexZenon(~alzenon@178.34.163.88) (Ping timeout: 240 seconds)
2023-06-14 03:20:19 +0200Alex_test(~al_test@178.34.163.88)
2023-06-14 03:20:19 +0200AlexZenon(~alzenon@178.34.163.88)
2023-06-14 03:20:19 +0200ddellacosta(~ddellacos@146.70.165.139) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200rubin55_(sid175221@id-175221.hampstead.irccloud.com)
2023-06-14 03:20:20 +0200foul_owl(~kerry@71.212.137.212) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200biberu(~biberu@user/biberu) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200juri_(~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200extor(~extor@ns3018124.ip-149-202-82.eu) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200piele_(~piele@tbonesteak.creativeserver.net)
2023-06-14 03:20:20 +0200B-J(~BenziJuni@dsl-149-64-112.hive.is) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200jargon(~jargon@184.101.75.235) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200Luj(~Luj@2a01:e0a:5f9:9681:f71f:fbb2:cbdf:4da0) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200jero98772(~jero98772@2800:484:1d7f:5d36::2) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200glider(~glider@user/glider) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200ijqq(uid603979@id-603979.helmsley.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200EsoAlgo81(~EsoAlgo@129.146.136.145) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200kadobanana(~mud@user/kadoban) (Ping timeout: 240 seconds)
2023-06-14 03:20:20 +0200taupiqueur1042AAA2VT
2023-06-14 03:20:20 +0200taupiqueur1(~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net)
2023-06-14 03:20:20 +0200raym_(~ray@115.187.32.4)
2023-06-14 03:20:20 +0200chromobl1b(~user@37.113.180.121)
2023-06-14 03:20:20 +0200johnw-(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-06-14 03:20:20 +0200PotatoGim_(sid99505@id-99505.lymington.irccloud.com)
2023-06-14 03:20:20 +0200arrowhea_042AAA284
2023-06-14 03:20:20 +0200080AAA7GN(~christoph@78-22-4-67.access.telenet.be)
2023-06-14 03:20:20 +0200extor(~extor@ns3018124.ip-149-202-82.eu)
2023-06-14 03:20:21 +0200bramhaag9(~bramhaag@134.195.121.39)
2023-06-14 03:20:21 +0200jinsl-(~jinsl@2408:8207:2558:8870:211:32ff:fec8:6aea)
2023-06-14 03:20:21 +0200EPic_(apic@apic.name)
2023-06-14 03:20:21 +0200acertain_(sid470584@id-470584.hampstead.irccloud.com)
2023-06-14 03:20:21 +0200Pent_(sid313808@id-313808.lymington.irccloud.com)
2023-06-14 03:20:21 +0200cln(cln@wtf.cx)
2023-06-14 03:20:21 +0200robobub_(uid248673@id-248673.uxbridge.irccloud.com)
2023-06-14 03:20:21 +0200hpc_(~juzz@ip98-169-35-163.dc.dc.cox.net)
2023-06-14 03:20:21 +0200080AAA7GN(~christoph@78-22-4-67.access.telenet.be) (Write error: Connection reset by peer)
2023-06-14 03:20:21 +0200bramhaag9(~bramhaag@134.195.121.39) (Read error: Connection reset by peer)
2023-06-14 03:20:21 +0200bramhaag6(~bramhaag@134.195.121.39)
2023-06-14 03:20:21 +0200jackdk_(sid373013@id-373013.tinside.irccloud.com)
2023-06-14 03:20:21 +0200chromobl1b(~user@37.113.180.121) (Read error: Connection reset by peer)
2023-06-14 03:20:21 +0200Errdonald(~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8)
2023-06-14 03:20:21 +0200chromobl1b(~user@37.113.180.121)
2023-06-14 03:20:21 +0200johnw-(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Read error: Connection reset by peer)
2023-06-14 03:20:21 +0200taupiqueur1(~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net) (Read error: Connection reset by peer)
2023-06-14 03:20:21 +0200robobub_(uid248673@id-248673.uxbridge.irccloud.com) (Max SendQ exceeded)
2023-06-14 03:20:23 +0200tessier_(~treed@ip72-197-145-89.sd.sd.cox.net)
2023-06-14 03:20:24 +0200taupiqueur2(~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net)
2023-06-14 03:20:25 +0200xax__(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-06-14 03:20:27 +0200biberu-(~biberu@user/biberu)
2023-06-14 03:20:31 +0200raym_(~ray@115.187.32.4) (Changing host)
2023-06-14 03:20:31 +0200raym_(~ray@user/raym)
2023-06-14 03:20:31 +0200tcard__(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-06-14 03:20:31 +0200pyrex_(~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c)
2023-06-14 03:20:31 +0200pyrex_(~pyrex@2601:645:8700:eeb0:9495:a28f:e14d:d40c) (Client Quit)
2023-06-14 03:20:32 +0200acro_acro
2023-06-14 03:20:32 +0200pavonia_(~user@ip5f5bd7ad.dynamic.kabel-deutschland.de)
2023-06-14 03:20:33 +0200lightandlight(sid135476@id-135476.helmsley.irccloud.com)
2023-06-14 03:20:33 +0200heartburn(~gass@2a00:d880:3:1::b1e4:b241)
2023-06-14 03:20:33 +0200042AAA36V(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-06-14 03:20:34 +0200thegeekinside(~thegeekin@189.217.90.138) (Ping timeout: 240 seconds)
2023-06-14 03:20:34 +0200pavonia(~user@user/siracusa) (Ping timeout: 240 seconds)
2023-06-14 03:20:34 +0200pavonia_pavonia
2023-06-14 03:20:35 +0200shapr`(~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291)
2023-06-14 03:20:36 +0200tom_(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2023-06-14 03:20:36 +0200mei(~mei@user/mei) (Ping timeout: 240 seconds)
2023-06-14 03:20:36 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 240 seconds)
2023-06-14 03:20:36 +0200jinsl(~jinsl@123.120.169.188) (Ping timeout: 240 seconds)
2023-06-14 03:20:36 +0200tritlo_(sid58727@id-58727.hampstead.irccloud.com)
2023-06-14 03:20:36 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-06-14 03:20:36 +0200img(~img@2405:6580:b1c0:2500:96c6:91ff:fea5:bc11)
2023-06-14 03:20:37 +0200img_(~img@user/img) (Ping timeout: 240 seconds)
2023-06-14 03:20:37 +0200bramhaag(~bramhaag@134.195.121.39) (Ping timeout: 240 seconds)
2023-06-14 03:20:37 +0200ft(~ft@p508dbdef.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-06-14 03:20:37 +0200son0p(~ff@181.136.122.143) (Ping timeout: 240 seconds)
2023-06-14 03:20:37 +0200shapr(~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291) (Ping timeout: 240 seconds)
2023-06-14 03:20:37 +0200chromoblob(~user@37.113.180.121) (Ping timeout: 240 seconds)
2023-06-14 03:20:38 +0200bramhaag6bramhaag
2023-06-14 03:20:38 +0200delyan_(sid523379@id-523379.hampstead.irccloud.com)
2023-06-14 03:20:38 +0200ijqq__(uid603979@id-603979.helmsley.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 03:20:38 +0200042AAA284(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200anpad(~pandeyan@user/anpad) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200biberu\(~biberu@user/biberu) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200pyrex(~pyrex@user/pyrex) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200jargon_(~jargon@184.101.75.235) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200lottaquestions_(~nick@2607:fa49:503f:6d00:76c6:8180:36e3:46f2) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200042AAA2VT(~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200srk_(~sorki@user/srk) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200talisman`(~user@2601:204:ef01:8ca0::a680) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200mauke_(~mauke@user/mauke) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200tzh_(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200Sgeo_(~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200cheater_(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200johnw_(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200hays(rootvegeta@fsf/member/hays) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200tessier(~treed@ip72-197-145-89.sd.sd.cox.net) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200emergence(thelounge@2607:5300:60:5910:dcad:beff:feef:5bc) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200Errdonald_(~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200wns(~user@103.206.114.90) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200bionade24(~bionade24@2a03:4000:33:45b::1) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200anderson(~TheFunOne@user/anderson) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200Xe(~cadey@tailscale/xe) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200hisa38(~hisa38@104-181-102-238.lightspeed.wepbfl.sbcglobal.net) (Ping timeout: 240 seconds)
2023-06-14 03:20:39 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
2023-06-14 03:20:40 +0200ggb_(a62ffbaf4f@2604:bf00:561:2000::3ac)
2023-06-14 03:20:40 +0200filwisher_(2e6936c793@2604:bf00:561:2000::170)
2023-06-14 03:20:40 +0200lukec_(9dfd4d094e@2604:bf00:561:2000::10e)
2023-06-14 03:20:40 +0200bsima1_(9d7e39c8ad@2604:bf00:561:2000::dd)
2023-06-14 03:20:40 +0200landonf_(landonf@mac68k.info)
2023-06-14 03:20:41 +0200AlexNoo_(~AlexNoo@178.34.163.88)
2023-06-14 03:20:42 +0200AlexNoo_(~AlexNoo@178.34.163.88) (Read error: Connection reset by peer)
2023-06-14 03:20:43 +0200AlexNoo_(~AlexNoo@178.34.163.88)
2023-06-14 03:20:43 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2023-06-14 03:20:44 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-06-14 03:20:44 +0200ijqq___(uid603979@id-603979.helmsley.irccloud.com)
2023-06-14 03:20:45 +0200b20n(sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:20:45 +0200red-snai-(~snail@static.151.210.203.116.clients.your-server.de) (Ping timeout: 255 seconds)
2023-06-14 03:20:45 +0200cawfee_(~root@2406:3003:2077:2758::babe)
2023-06-14 03:20:48 +0200elkcl(~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru)
2023-06-14 03:20:52 +0200edmundnoble_(sid229620@id-229620.helmsley.irccloud.com) (Read error: Connection reset by peer)
2023-06-14 03:20:52 +0200ijqq_(uid603979@id-603979.helmsley.irccloud.com) (Read error: Connection reset by peer)
2023-06-14 03:20:53 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-06-14 03:20:53 +0200wroathe(~wroathe@user/wroathe)
2023-06-14 03:20:56 +0200pavonia_(~user@ip5f5bd7ad.dynamic.kabel-deutschland.de)
2023-06-14 03:20:57 +0200megaTherion_(~therion@unix.io) (Read error: Connection reset by peer)
2023-06-14 03:20:57 +0200pavonia(~user@ip5f5bd7ad.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-06-14 03:21:00 +0200ijqq_(uid603979@id-603979.helmsley.irccloud.com)
2023-06-14 03:21:00 +0200megaTherion(~therion@unix.io)
2023-06-14 03:21:01 +0200mikko(~mikko@dsl-trebng22-58c1a8-185.dhcp.inet.fi)
2023-06-14 03:21:06 +0200haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
2023-06-14 03:21:08 +0200img(~img@2405:6580:b1c0:2500:96c6:91ff:fea5:bc11) (Changing host)
2023-06-14 03:21:08 +0200img(~img@user/img)
2023-06-14 03:21:09 +0200red-snail1(~snail@static.151.210.203.116.clients.your-server.de)
2023-06-14 03:21:10 +0200jero98772(~jero98772@2800:484:1d7f:5d36::2)
2023-06-14 03:21:12 +0200b20n(sid115913@id-115913.uxbridge.irccloud.com)
2023-06-14 03:21:13 +0200edmundnoble_(sid229620@id-229620.helmsley.irccloud.com)
2023-06-14 03:21:14 +0200jackdk_jackdk
2023-06-14 03:21:15 +0200shapr``(~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291)
2023-06-14 03:21:19 +0200lukec_(9dfd4d094e@2604:bf00:561:2000::10e) (Read error: Connection reset by peer)
2023-06-14 03:21:19 +0200filwisher_(2e6936c793@2604:bf00:561:2000::170) (Read error: Connection reset by peer)
2023-06-14 03:21:19 +0200bsima1_(9d7e39c8ad@2604:bf00:561:2000::dd) (Read error: Connection reset by peer)
2023-06-14 03:21:19 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-06-14 03:21:27 +0200bsima1(9d7e39c8ad@2604:bf00:561:2000::dd)
2023-06-14 03:21:27 +0200lukec(9dfd4d094e@2604:bf00:561:2000::10e)
2023-06-14 03:21:27 +0200filwisher(2e6936c793@2604:bf00:561:2000::170)
2023-06-14 03:21:28 +0200pavonia_pavonia
2023-06-14 03:21:29 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 240 seconds)
2023-06-14 03:21:29 +0200tritlo_(sid58727@id-58727.hampstead.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 03:21:32 +0200jinsl-(~jinsl@2408:8207:2558:8870:211:32ff:fec8:6aea) (Ping timeout: 240 seconds)
2023-06-14 03:21:34 +0200pavonia(~user@ip5f5bd7ad.dynamic.kabel-deutschland.de) (Changing host)
2023-06-14 03:21:34 +0200pavonia(~user@user/siracusa)
2023-06-14 03:21:35 +0200ridcully(~ridcully@p57b52f2c.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2023-06-14 03:21:37 +0200lightandlight(sid135476@id-135476.helmsley.irccloud.com) (Read error: Connection reset by peer)
2023-06-14 03:21:38 +0200mikko(~mikko@dsl-trebng22-58c1a8-185.dhcp.inet.fi) (Changing host)
2023-06-14 03:21:39 +0200mikko(~mikko@user/mikko)
2023-06-14 03:21:39 +0200SrPx_(sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 03:21:50 +0200biberu-biberu
2023-06-14 03:21:55 +0200jackdk(sid373013@id-373013.tinside.irccloud.com) (Changing host)
2023-06-14 03:21:55 +0200jackdk(sid373013@cssa/jackdk)
2023-06-14 03:21:56 +0200rubin55_(sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 03:21:57 +0200tritlo_(sid58727@id-58727.hampstead.irccloud.com)
2023-06-14 03:21:58 +0200ridcully(~ridcully@p57b52f2c.dip0.t-ipconnect.de)
2023-06-14 03:22:00 +0200 <Axman6> Oh dear...
2023-06-14 03:22:00 +0200lightandlight(sid135476@id-135476.helmsley.irccloud.com)
2023-06-14 03:22:02 +0200foul_owl(~kerry@71.212.137.212)
2023-06-14 03:22:04 +0200img_(~img@2405:6580:b1c0:2500:96c6:91ff:fea5:bc11)
2023-06-14 03:22:06 +0200Errdonald__(~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8) (Ping timeout: 254 seconds)
2023-06-14 03:22:06 +0200remsen-(ianremsen@tilde.team) (Ping timeout: 254 seconds)
2023-06-14 03:22:06 +0200haritzondo(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Ping timeout: 254 seconds)
2023-06-14 03:22:06 +0200dagi82659(~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (Ping timeout: 254 seconds)
2023-06-14 03:22:11 +0200jinsl(~jinsl@2408:8207:2558:8870:211:32ff:fec8:6aea)
2023-06-14 03:22:12 +0200EPic_(apic@apic.name) (Max SendQ exceeded)
2023-06-14 03:22:20 +0200Alex_test(~al_test@178.34.163.88) (Ping timeout: 240 seconds)
2023-06-14 03:22:30 +0200img(~img@user/img) (Ping timeout: 240 seconds)
2023-06-14 03:22:30 +0200rubin55_(sid175221@id-175221.hampstead.irccloud.com)
2023-06-14 03:22:31 +0200img_(~img@2405:6580:b1c0:2500:96c6:91ff:fea5:bc11) (Changing host)
2023-06-14 03:22:31 +0200img_(~img@user/img)
2023-06-14 03:22:33 +0200Benzi-Junior(~BenziJuni@88-149-64-112.du.xdsl.is) (Ping timeout: 255 seconds)
2023-06-14 03:22:44 +0200Pent_(sid313808@id-313808.lymington.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 03:22:44 +0200acertain_(sid470584@id-470584.hampstead.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 03:22:44 +0200AlexZenon(~alzenon@178.34.163.88) (Ping timeout: 240 seconds)
2023-06-14 03:22:44 +0200080AAA5IJ(~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-06-14 03:22:44 +0200tom__(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Ping timeout: 240 seconds)
2023-06-14 03:22:58 +0200Clint(~Clint@thumb.scru.org)
2023-06-14 03:22:59 +0200landonf_(landonf@mac68k.info) (Ping timeout: 240 seconds)
2023-06-14 03:23:00 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 240 seconds)
2023-06-14 03:23:00 +0200042AAA36V(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 240 seconds)
2023-06-14 03:23:00 +0200heartburn(~gass@2a00:d880:3:1::b1e4:b241) (Ping timeout: 240 seconds)
2023-06-14 03:23:00 +0200tcard__(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 240 seconds)
2023-06-14 03:23:07 +0200phma_phma
2023-06-14 03:23:08 +0200Benzi-Junior(~BenziJuni@88-149-64-112.du.xdsl.is)
2023-06-14 03:23:08 +0200hpc_(~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 240 seconds)
2023-06-14 03:23:08 +0200cln(cln@wtf.cx) (Ping timeout: 240 seconds)
2023-06-14 03:23:08 +0200extor(~extor@ns3018124.ip-149-202-82.eu) (Ping timeout: 240 seconds)
2023-06-14 03:23:24 +0200Clint(~Clint@thumb.scru.org) (Changing host)
2023-06-14 03:23:24 +0200Clint(~Clint@user/clint)
2023-06-14 03:23:29 +0200ggb_(a62ffbaf4f@2604:bf00:561:2000::3ac) (Ping timeout: 240 seconds)
2023-06-14 03:23:30 +0200delyan_(sid523379@id-523379.hampstead.irccloud.com) (Ping timeout: 240 seconds)
2023-06-14 03:23:30 +0200shapr`(~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291) (Ping timeout: 240 seconds)
2023-06-14 03:23:38 +0200piele(~piele@tbonesteak.creativeserver.net)
2023-06-14 03:23:46 +0200chromobl1bchromoblob
2023-06-14 03:23:55 +0200remsen(ianremsen@tilde.team)
2023-06-14 03:23:56 +0200raym_(~ray@user/raym) (Ping timeout: 240 seconds)
2023-06-14 03:24:06 +0200JSharp(sid4580@id-4580.lymington.irccloud.com)
2023-06-14 03:24:07 +0200foul_owl(~kerry@71.212.137.212) (Client Quit)
2023-06-14 03:24:10 +0200SrPx_(sid108780@id-108780.uxbridge.irccloud.com)
2023-06-14 03:24:27 +0200cln(cln@wtf.cx)
2023-06-14 03:24:28 +0200heartburn(~gass@2a00:d880:3:1::b1e4:b241)
2023-06-14 03:24:29 +0200hpc(~juzz@ip98-169-35-163.dc.dc.cox.net)
2023-06-14 03:24:32 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
2023-06-14 03:24:37 +0200acertain_(sid470584@id-470584.hampstead.irccloud.com)
2023-06-14 03:24:49 +0200haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
2023-06-14 03:24:49 +0200haritz(~hrtz@user/haritz)
2023-06-14 03:24:51 +0200raym(~ray@115.187.32.4)
2023-06-14 03:25:07 +0200PotatoGim_(sid99505@id-99505.lymington.irccloud.com)
2023-06-14 03:25:21 +0200raym(~ray@115.187.32.4) (Changing host)
2023-06-14 03:25:21 +0200raym(~ray@user/raym)
2023-06-14 03:25:44 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-06-14 03:25:52 +0200Vajb(~Vajb@2001:999:484:a37d:e618:9886:4843:f5d8)
2023-06-14 03:26:17 +0200Ankhers(e99e97ef8e@2604:bf00:561:2000::2a2)
2023-06-14 03:26:31 +0200ymherklotz(cb2c9cfbdd@2604:bf00:561:2000::29a)
2023-06-14 03:26:37 +0200Alex_test(~al_test@178.34.163.88)
2023-06-14 03:26:37 +0200AlexZenon(~alzenon@178.34.163.88)
2023-06-14 03:27:01 +0200falafel(~falafel@2601:482:8003:cd80:3095:f1cc:14b9:ee5e)
2023-06-14 03:27:12 +0200falafel(~falafel@2601:482:8003:cd80:3095:f1cc:14b9:ee5e) (Remote host closed the connection)
2023-06-14 03:27:14 +0200Raito_Bezarius(~Raito@2001:470:ca5e:dee:f482:b4ff:fe18:2d7d)
2023-06-14 03:27:32 +0200bionade24(~bionade24@2a03:4000:33:45b::1)
2023-06-14 03:27:35 +0200Raito_Bezarius(~Raito@2001:470:ca5e:dee:f482:b4ff:fe18:2d7d) (Client Quit)
2023-06-14 03:27:57 +0200landonf(landonf@mac68k.info)
2023-06-14 03:28:05 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-06-14 03:28:25 +0200witcher(~witcher@wiredspace.de)
2023-06-14 03:28:32 +0200cyphase(~cyphase@user/cyphase)
2023-06-14 03:28:40 +0200sus(1b7af6299f@user/zeromomentum)
2023-06-14 03:28:46 +0200b0o(0e4a0bf4c9@2604:bf00:561:2000::1bf)
2023-06-14 03:29:05 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-06-14 03:29:09 +0200turlando(~turlando@user/turlando)
2023-06-14 03:29:12 +0200falafel(~falafel@2601:482:8003:cd80:3095:f1cc:14b9:ee5e)
2023-06-14 03:29:12 +0200sm2n(ae95cb1267@user/sm2n)
2023-06-14 03:29:14 +0200jkoshy(99b9359beb@user/jkoshy)
2023-06-14 03:29:14 +0200cheater_(~Username@user/cheater)
2023-06-14 03:29:14 +0200cheater_cheater
2023-06-14 03:29:16 +0200arcadewise(52968ed80d@2604:bf00:561:2000::3df)
2023-06-14 03:29:18 +0200retropikzel(9d1a4f9f46@2604:bf00:561:2000::ce)
2023-06-14 03:30:12 +0200jleightcap(7bc4014b62@user/jleightcap)
2023-06-14 03:30:16 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es)
2023-06-14 03:30:17 +0200flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
2023-06-14 03:30:17 +0200n1essa(3d621153a5@2604:bf00:561:2000::df7)
2023-06-14 03:30:19 +0200Nosrep(~Nosrep@user/nosrep)
2023-06-14 03:30:19 +0200chaitlatte0(ea29c0bb16@2604:bf00:561:2000::1124)
2023-06-14 03:30:21 +0200srk(~sorki@user/srk)
2023-06-14 03:30:30 +0200chaitlatte0(ea29c0bb16@2604:bf00:561:2000::1124) (Changing host)
2023-06-14 03:30:30 +0200chaitlatte0(ea29c0bb16@user/chaitlatte0)
2023-06-14 03:30:36 +0200 <ijqq_> :/
2023-06-14 03:30:38 +0200Nosrep(~Nosrep@user/nosrep) (Remote host closed the connection)
2023-06-14 03:30:50 +0200mauke(~mauke@user/mauke)
2023-06-14 03:31:00 +0200lbseale(~quassel@user/ep1ctetus)
2023-06-14 03:31:07 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2023-06-14 03:31:15 +0200fluffyballoon(45ce440a48@2604:bf00:561:2000::e2)
2023-06-14 03:31:27 +0200juri_(~juri@84-19-175-187.pool.ovpn.com)
2023-06-14 03:31:33 +0200Nosrep(~Nosrep@user/nosrep)
2023-06-14 03:31:46 +0200jakzale(6291399afa@user/jakzale)
2023-06-14 03:31:52 +0200anpad(~pandeyan@135-180-53-134.fiber.dynamic.sonic.net)
2023-06-14 03:31:55 +0200probie(cc0b34050a@user/probie)
2023-06-14 03:31:57 +0200anpad(~pandeyan@135-180-53-134.fiber.dynamic.sonic.net) (Changing host)
2023-06-14 03:31:57 +0200anpad(~pandeyan@user/anpad)
2023-06-14 03:32:05 +0200henrytill(e0180937c3@2604:bf00:561:2000::e8c)
2023-06-14 03:32:05 +0200MonsoonSecrecy(f78c86e960@2604:bf00:561:2000::f99)
2023-06-14 03:32:09 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-06-14 03:32:09 +0200manwithluck(~manwithlu@2406:da14:5ea:e400:49df:93ba:b95b:7bda)
2023-06-14 03:32:20 +0200JoelMcCracken(5ea8252fbb@2604:bf00:561:2000::10e3)
2023-06-14 03:32:23 +0200dtman34(~dtman34@2601:447:d000:93c9:a04d:f386:6724:b122)
2023-06-14 03:32:36 +0200hexeme(~hexeme@user/hexeme)
2023-06-14 03:32:41 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2023-06-14 03:32:45 +0200m5zs7k(aquares@web10.mydevil.net)
2023-06-14 03:32:53 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-06-14 03:33:04 +0200adamCS(~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com)
2023-06-14 03:33:12 +0200glider(~glider@user/glider)
2023-06-14 03:33:12 +0200jlwoodwa(~jlwoodwa@173.30.18.191)
2023-06-14 03:33:17 +0200energizer(~energizer@user/energizer)
2023-06-14 03:33:28 +0200Angelz(Angelz@2605:6400:30:fc15:d55b:fa6c:bd14:9973)
2023-06-14 03:33:32 +0200 <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
2023-06-14 03:33:40 +0200anderson(~anderson@user/anderson)
2023-06-14 03:33:47 +0200Yumemi(~Yumemi@chamoin.net)
2023-06-14 03:33:51 +0200 <ijqq_> Okay cool, me too actually.
2023-06-14 03:33:59 +0200ft(~ft@p508dbdef.dip0.t-ipconnect.de)
2023-06-14 03:34:08 +0200shreyasminocha(51fdc93eda@user/shreyasminocha)
2023-06-14 03:34:13 +0200 <ijqq_> Thank you very much for the help, I'll be on tomorrow too, hopefully see you then
2023-06-14 03:34:14 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
2023-06-14 03:34:26 +0200evanrelf(3addc196af@2604:bf00:561:2000::f0)
2023-06-14 03:34:33 +0200fvr(ef3e56ca8b@2604:bf00:561:2000::3c4)
2023-06-14 03:34:59 +0200RMSBach(~guygastin@137.184.131.156)
2023-06-14 03:35:14 +0200APic(apic@apic.name)
2023-06-14 03:35:19 +0200ggb(a62ffbaf4f@2604:bf00:561:2000::3ac)
2023-06-14 03:35:31 +0200euandreh(~Thunderbi@189.6.18.7)
2023-06-14 03:36:00 +0200delyan_(sid523379@id-523379.hampstead.irccloud.com)
2023-06-14 03:36:15 +0200extor(~extor@ns3018124.ip-149-202-82.eu)
2023-06-14 03:36:23 +0200whereiseveryone(206ba86c98@2604:bf00:561:2000::2e4)
2023-06-14 03:36:48 +0200Pent_(sid313808@id-313808.lymington.irccloud.com)
2023-06-14 03:36:58 +0200heath2(~heath@user/heath)
2023-06-14 03:38:17 +0200ddellaco1(~ddellacos@146.70.165.139)
2023-06-14 03:38:24 +0200robobub_(uid248673@id-248673.uxbridge.irccloud.com)
2023-06-14 03:39:45 +0200samhh_(7569f027cf@2604:bf00:561:2000::e4)
2023-06-14 03:40:58 +0200theesm(2cbdf4b38a@2604:bf00:561:2000::11c8)
2023-06-14 03:41:49 +0200 <Axman6> ijqq_: I don't have any problem with that code
2023-06-14 03:42:44 +0200 <ijqq_> ohh I though you were saying Oh Dear upon seeing it
2023-06-14 03:46:00 +0200jargon(~jargon@184.101.75.235)
2023-06-14 03:46:38 +0200arrowhea_(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
2023-06-14 03:47:35 +0200jlwoodwa(~jlwoodwa@173.30.18.191) (Quit: Leaving)
2023-06-14 03:48:29 +0200 <arrowhea_> jackdk: but also, why lenses over IORef? Are lenses more functional? What about the claims they are unidiomatic?
2023-06-14 03:48:36 +0200arrowhea_arrowhead
2023-06-14 03:50:06 +0200 <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.
2023-06-14 03:52:28 +0200 <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.
2023-06-14 03:52:57 +0200 <Axman6> ijqq_: no, looks like we had a netsplit so a lot of users were joining and parting
2023-06-14 03:54:53 +0200 <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
2023-06-14 03:56:49 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 268 seconds)
2023-06-14 03:57:02 +0200 <ijqq_> oh interesting, i didn't know about that. and thank you :)
2023-06-14 03:57:20 +0200 <ijqq_> even has a wikipedia
2023-06-14 03:57:25 +0200phma(phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae) (Read error: Connection reset by peer)
2023-06-14 03:57:49 +0200phma(phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae)
2023-06-14 03:58:06 +0200Adran(~adran@botters/adran)
2023-06-14 03:58:11 +0200zer0bitz(~zer0bitz@user/zer0bitz)
2023-06-14 03:58:33 +0200jargon_(~jargon@184.101.75.235)
2023-06-14 03:59:25 +0200mauke_(~mauke@user/mauke)
2023-06-14 03:59:34 +0200thegeekinside(~thegeekin@189.217.90.138) (Ping timeout: 255 seconds)
2023-06-14 03:59:34 +0200Vajb(~Vajb@2001:999:484:a37d:e618:9886:4843:f5d8) (Ping timeout: 255 seconds)
2023-06-14 03:59:48 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-06-14 04:00:01 +0200euandreh(~Thunderbi@189.6.18.7) (Ping timeout: 255 seconds)
2023-06-14 04:00:13 +0200euandreh1(~Thunderbi@189.6.18.7)
2023-06-14 04:00:28 +0200jargon(~jargon@184.101.75.235) (Ping timeout: 255 seconds)
2023-06-14 04:00:28 +0200robobub_(uid248673@id-248673.uxbridge.irccloud.com) (Ping timeout: 255 seconds)
2023-06-14 04:00:28 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
2023-06-14 04:00:28 +0200AlexZenon(~alzenon@178.34.163.88) (Ping timeout: 255 seconds)
2023-06-14 04:00:35 +0200m5zs7k_(aquares@web10.mydevil.net)
2023-06-14 04:00:38 +0200srk-(~sorki@user/srk)
2023-06-14 04:00:38 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2023-06-14 04:00:49 +0200AlexZenon(~alzenon@178.34.163.88)
2023-06-14 04:00:55 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 255 seconds)
2023-06-14 04:00:55 +0200mauke(~mauke@user/mauke) (Ping timeout: 255 seconds)
2023-06-14 04:00:55 +0200mauke_mauke
2023-06-14 04:01:04 +0200Vajb(~Vajb@2001:999:484:a37d:e618:9886:4843:f5d8)
2023-06-14 04:01:21 +0200m5zs7k(aquares@web10.mydevil.net) (Quit: m5zs7k)
2023-06-14 04:01:22 +0200ft(~ft@p508dbdef.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-06-14 04:01:22 +0200srk(~sorki@user/srk) (Ping timeout: 255 seconds)
2023-06-14 04:01:22 +0200cyphase(~cyphase@user/cyphase) (Ping timeout: 255 seconds)
2023-06-14 04:01:22 +0200zer0bitz_(~zer0bitz@user/zer0bitz) (Ping timeout: 255 seconds)
2023-06-14 04:01:34 +0200foul_owl(~kerry@71.212.137.212)
2023-06-14 04:01:48 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2023-06-14 04:01:56 +0200Lord_of_Life_Lord_of_Life
2023-06-14 04:01:59 +0200phma(phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae) (Read error: Connection reset by peer)
2023-06-14 04:02:11 +0200cyphase(~cyphase@user/cyphase)
2023-06-14 04:02:11 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
2023-06-14 04:02:23 +0200phma(~phma@host-67-44-208-30.hnremote.net)
2023-06-14 04:02:30 +0200euandreh1euandreh
2023-06-14 04:02:48 +0200ft(~ft@p508dbdef.dip0.t-ipconnect.de)
2023-06-14 04:03:03 +0200xff0x_(~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 255 seconds)
2023-06-14 04:03:24 +0200srk-srk
2023-06-14 04:03:43 +0200mauke_(~mauke@user/mauke)
2023-06-14 04:04:03 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 04:04:11 +0200robobub_(uid248673@id-248673.uxbridge.irccloud.com)
2023-06-14 04:05:25 +0200mauke(~mauke@user/mauke) (Ping timeout: 255 seconds)
2023-06-14 04:05:25 +0200mauke_mauke
2023-06-14 04:06:12 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
2023-06-14 04:07:19 +0200 <arrowhead> dibblego: the "so I stopped" part doesn't follow because instead of stopping I used IORef.
2023-06-14 04:07:27 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-06-14 04:07:49 +0200 <dibblego> yeah no worries, I stopped using lens because it is unidiomatic, says so on the internet
2023-06-14 04:08:41 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2023-06-14 04:08:47 +0200 <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)
2023-06-14 04:09:15 +0200hugo(znc@verdigris.lysator.liu.se)
2023-06-14 04:09:15 +0200m5zs7k_m5zs7k
2023-06-14 04:09:15 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
2023-06-14 04:09:19 +0200DDR(~DDR@2604:3d08:4c7f:8250:4f2c:b738:d82e:1bc4)
2023-06-14 04:10:21 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
2023-06-14 04:10:22 +0200 <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?
2023-06-14 04:10:30 +0200mixfix41(~sdeny9ee@user/mixfix41)
2023-06-14 04:11:11 +0200 <c_wraith> arrowhead: does your implementation show modifications done by concurrent threads?
2023-06-14 04:11:27 +0200 <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
2023-06-14 04:12:13 +0200 <arrowhead> c_wraith: I don't worry about concurrency, sorry :/
2023-06-14 04:12:26 +0200 <c_wraith> arrowhead: then you're ignoring what makes IORef not functional
2023-06-14 04:12:51 +0200 <arrowhead> I might be. What is the part I am missing?
2023-06-14 04:13:07 +0200 <c_wraith> Thread 1 writes a value to an IORef. Thread 2 sees the change.
2023-06-14 04:14:01 +0200 <arrowhead> But for a single-threaded program, where is IORef not functional?
2023-06-14 04:14:47 +0200falafel(~falafel@2601:482:8003:cd80:3095:f1cc:14b9:ee5e) (Remote host closed the connection)
2023-06-14 04:14:50 +0200 <c_wraith> in interface? If you ignore efficiency, it's roughly equivalent to a State transformer carrying a Map
2023-06-14 04:15:07 +0200 <c_wraith> The efficiency is a big deal, though
2023-06-14 04:15:31 +0200ames(~amelia@offtopia/offtopian/amelia)
2023-06-14 04:15:53 +0200 <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)
2023-06-14 04:16:25 +0200 <c_wraith> But O(1) updates and concurrent visibility are the main reasons IORefs exist.
2023-06-14 04:16:35 +0200 <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
2023-06-14 04:17:01 +0200 <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?
2023-06-14 04:17:15 +0200 <arrowhead> It's almost never been a part of my life in decades of professional programming
2023-06-14 04:17:24 +0200 <c_wraith> Probably. There are too many people here to ascribe anything to all of them :)
2023-06-14 04:17:24 +0200jargon_jargon
2023-06-14 04:17:53 +0200 <arrowhead> no worries.
2023-06-14 04:17:55 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-06-14 04:18:26 +0200bgamari(~bgamari@64.223.233.113) (Server closed connection)
2023-06-14 04:18:39 +0200 <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
2023-06-14 04:18:58 +0200 <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.
2023-06-14 04:19:25 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-06-14 04:19:25 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-06-14 04:19:25 +0200finn_elijaFinnElija
2023-06-14 04:19:25 +0200 <arrowhead> But isn't STRef totally isomorphic to IORef ?
2023-06-14 04:19:35 +0200 <arrowhead> The difference is one "run" call in main
2023-06-14 04:19:43 +0200bgamari(~bgamari@64.223.233.113)
2023-06-14 04:19:54 +0200 <c_wraith> ST gives you an externally-pure interface while maintaining O(1) updates internally.
2023-06-14 04:20:23 +0200 <c_wraith> It's only something to reach for when you're going for efficiency improvements
2023-06-14 04:20:54 +0200 <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?
2023-06-14 04:21:16 +0200 <c_wraith> No, I'm comparing to a completely pure version, rather than an externally-pure version
2023-06-14 04:21:49 +0200 <arrowhead> understood. In other words STRef is the fastest pure (outside IO) ref
2023-06-14 04:22:11 +0200falafel(~falafel@c-68-47-242-91.hsd1.tn.comcast.net)
2023-06-14 04:22:15 +0200 <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.
2023-06-14 04:22:36 +0200 <arrowhead> I see that.
2023-06-14 04:25:48 +0200 <arrowhead> I think I will stick with the IORef because in my case I just cannot see a benefit to using STRefs instead
2023-06-14 04:26:32 +0200 <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.
2023-06-14 04:26:54 +0200 <Daniel[m]123> just use TVars
2023-06-14 04:27:18 +0200 <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.
2023-06-14 04:27:26 +0200 <arrowhead> Daniel[m]123: why?
2023-06-14 04:27:56 +0200 <Daniel[m]123> arrowhead: because if you're writing something non-trivial its gonna be async
2023-06-14 04:28:33 +0200 <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
2023-06-14 04:28:44 +0200 <Daniel[m]123> judging from 2022 state of haskell survey
2023-06-14 04:28:47 +0200 <Daniel[m]123> so nvm ignore me
2023-06-14 04:29:05 +0200 <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.
2023-06-14 04:29:24 +0200lilpotent_jlemen(~lilpotent@2001:470:69fc:105::3:6eb6)
2023-06-14 04:29:27 +0200 <Daniel[m]123> monad transformers dont handle async
2023-06-14 04:29:36 +0200 <arrowhead> equivalently they do
2023-06-14 04:29:36 +0200 <Daniel[m]123> it just handles type tetris is a better way
2023-06-14 04:29:56 +0200 <Daniel[m]123> except its still bad so people are trying to see if effects are better
2023-06-14 04:30:12 +0200 <Daniel[m]123> they dont
2023-06-14 04:30:19 +0200 <Daniel[m]123> async means your code is shared across contexts
2023-06-14 04:30:20 +0200 <arrowhead> Daniel[m]123: effects are composable with one tiny tradeoff
2023-06-14 04:30:48 +0200 <arrowhead> Daniel[m]123: read: Monad Transformers and Modular Algebraic Effects: What Binds Them Together
2023-06-14 04:31:27 +0200 <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.
2023-06-14 04:31:41 +0200 <arrowhead> where's the guy who said I repeat what I read on the web? :P
2023-06-14 04:31:55 +0200 <arrowhead> I do and then I cite it.
2023-06-14 04:32:33 +0200 <Daniel[m]123> wut?
2023-06-14 04:32:39 +0200 <arrowhead> Daniel[m]123: "async means your code is shared across contexts" -> yes, across delimited continuations specifically.
2023-06-14 04:32:47 +0200 <arrowhead> do you even shift and reset?
2023-06-14 04:33:08 +0200 <Daniel[m]123> in particular, your code may be shared across another process and thread
2023-06-14 04:33:28 +0200 <arrowhead> Look at e.g. how C# implements Algebraic Effects, it's over async. And that is an "academically approved", correct implementation.
2023-06-14 04:33:28 +0200 <Daniel[m]123> but then again
2023-06-14 04:33:45 +0200 <Daniel[m]123> thats just c# being c#
2023-06-14 04:33:52 +0200 <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)
2023-06-14 04:33:57 +0200 <Daniel[m]123> and mind you thats effects
2023-06-14 04:33:59 +0200 <Daniel[m]123> not MTs
2023-06-14 04:34:03 +0200 <arrowhead> Daniel[m]123: no, as I said, that is an academically approved implementation
2023-06-14 04:34:12 +0200glguy_glguy
2023-06-14 04:34:17 +0200 <Daniel[m]123> MTs are different from effects and as i said, MT is bad, doesn't handle async
2023-06-14 04:34:18 +0200 <arrowhead> hence, it'w not C# being C# but C# implementing an implementation straight from a paper
2023-06-14 04:34:22 +0200 <Daniel[m]123> so they want effects
2023-06-14 04:34:33 +0200 <arrowhead> Daniel[m]123: I just cited you a paper thaat argues MT = Eff
2023-06-14 04:34:43 +0200 <arrowhead> they're not differ4ene
2023-06-14 04:34:43 +0200 <Daniel[m]123> i didnt see anything
2023-06-14 04:34:47 +0200 <Daniel[m]123> lmao
2023-06-14 04:34:48 +0200 <arrowhead> you said it, I quoted a paper
2023-06-14 04:34:54 +0200 <arrowhead> read: Monad Transformers and Modular Algebraic Effects: What Binds Them Together
2023-06-14 04:34:56 +0200 <Daniel[m]123> ?
2023-06-14 04:34:59 +0200 <Daniel[m]123> LMAO
2023-06-14 04:35:00 +0200 <arrowhead> see it?
2023-06-14 04:35:02 +0200 <Daniel[m]123> dude
2023-06-14 04:35:27 +0200 <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.
2023-06-14 04:35:35 +0200 <Daniel[m]123> aka they have a particular subset
2023-06-14 04:35:37 +0200 <arrowhead> read the conclusion
2023-06-14 04:35:46 +0200 <arrowhead> that's not how you read a paper,
2023-06-14 04:35:48 +0200 <Daniel[m]123> the claim is the same as "haskell is a imperative language"
2023-06-14 04:35:50 +0200 <Daniel[m]123> it is correct
2023-06-14 04:36:04 +0200 <arrowhead> look if you want to ignore Eff = MT go ahead, but they're the same
2023-06-14 04:36:06 +0200phma(~phma@host-67-44-208-30.hnremote.net) (Read error: Connection reset by peer)
2023-06-14 04:36:09 +0200 <arrowhead> the paper shows it
2023-06-14 04:36:13 +0200 <Daniel[m]123> you can tell that to eff guys
2023-06-14 04:36:18 +0200 <Daniel[m]123> is lexi here
2023-06-14 04:36:21 +0200 <arrowhead> the difference is miniscule and hard to characterize even
2023-06-14 04:36:29 +0200 <arrowhead> almost inexistent in usage
2023-06-14 04:36:33 +0200phma(~phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae)
2023-06-14 04:36:44 +0200 <Daniel[m]123> they showed that they both can model the same thing
2023-06-14 04:36:51 +0200 <Daniel[m]123> but it is different for good reason
2023-06-14 04:36:57 +0200 <Daniel[m]123> we cant say effects when we mean MT
2023-06-14 04:37:10 +0200 <arrowhead> right, and if two things can outwardly do the same thing then by Category they are the same thing
2023-06-14 04:37:41 +0200 <Daniel[m]123> and in particular, the actual implementation is very different
2023-06-14 04:37:50 +0200 <arrowhead> Don't worry, MTs are still strictly more powerful, but if you read the paper I still challenge you to explain the difference.
2023-06-14 04:38:00 +0200 <arrowhead> Daniel[m]123: for sure the implementations are completely different
2023-06-14 04:38:20 +0200 <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
2023-06-14 04:38:22 +0200 <arrowhead> Daniel[m]123: hence the point of knowing they're equivalent, to possibly move forward with more research into one over the other
2023-06-14 04:38:41 +0200 <Daniel[m]123> ???
2023-06-14 04:39:00 +0200 <arrowhead> Axman6: I don't understand. Are you saying I am trying to shape Haskell into something it is not?
2023-06-14 04:39:01 +0200phma(~phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae) (Read error: Connection reset by peer)
2023-06-14 04:39:25 +0200phma(phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae)
2023-06-14 04:41:07 +0200 <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
2023-06-14 04:43:08 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-06-14 04:43:08 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
2023-06-14 04:43:47 +0200td_(~td@i5387091C.versanet.de) (Ping timeout: 265 seconds)
2023-06-14 04:44:32 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
2023-06-14 04:44:58 +0200xff0x_(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-06-14 04:45:17 +0200td_(~td@i53870918.versanet.de)
2023-06-14 04:47:09 +0200 <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.
2023-06-14 04:47:56 +0200shapr``shapr
2023-06-14 04:54:10 +0200hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Quit: Leaving)
2023-06-14 04:54:23 +0200hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
2023-06-14 04:56:10 +0200cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2023-06-14 04:59:40 +0200hays(rootvegeta@fsf/member/hays)
2023-06-14 05:01:46 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
2023-06-14 05:04:22 +0200killer(~killer@210-129-13-32.farad.jp-east-2.compute.idcfcloud.net)
2023-06-14 05:05:02 +0200 <dibblego> arrowhead: I am not in the "is or is not functional" discussion. Instead, "is or is not appropriate"
2023-06-14 05:05:42 +0200killer(~killer@210-129-13-32.farad.jp-east-2.compute.idcfcloud.net) (Remote host closed the connection)
2023-06-14 05:06:29 +0200jero98772(~jero98772@2800:484:1d7f:5d36::2) (Remote host closed the connection)
2023-06-14 05:09:25 +0200cheater(~Username@user/cheater)
2023-06-14 05:09:35 +0200 <arrowhead> dibblego: then I agree with you that STRef is more appropriate than IORef in possibly most cases and also in my case.
2023-06-14 05:10:55 +0200 <dibblego> I do not.
2023-06-14 05:11:20 +0200 <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
2023-06-14 05:12:03 +0200 <arrowhead> probie: are you saying you never need a reference cell or that you use something else for a reference cell other than STRef?
2023-06-14 05:17:29 +0200falafel(~falafel@c-68-47-242-91.hsd1.tn.comcast.net) (Ping timeout: 240 seconds)
2023-06-14 05:17:59 +0200son0p(~ff@181.136.122.143)
2023-06-14 05:19:00 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-06-14 05:19:11 +0200zmt00(~zmt00@user/zmt00)
2023-06-14 05:19:13 +0200Sgeo(~Sgeo@user/sgeo)
2023-06-14 05:21:08 +0200 <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
2023-06-14 05:24:41 +0200 <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?
2023-06-14 05:25:40 +0200oneeyedalien(~oneeyedal@125-63-26-34.ip4.superloop.au)
2023-06-14 05:25:55 +0200oneeyedalien(~oneeyedal@125-63-26-34.ip4.superloop.au) (Remote host closed the connection)
2023-06-14 05:26:14 +0200ai5lk(~ai5lk@209-188-121-236.taosnet.com)
2023-06-14 05:27:10 +0200ai5lkshef
2023-06-14 05:27:45 +0200jtbx(~jtbx@user/jtbx)
2023-06-14 05:29:00 +0200bilegeek(~bilegeek@2600:1008:b0ad:3907:5a86:a7b0:fb8b:a72e)
2023-06-14 05:29:43 +0200phma_(~phma@host-67-44-208-30.hnremote.net)
2023-06-14 05:29:44 +0200shef(~ai5lk@209-188-121-236.taosnet.com) (Quit: WeeChat 3.8)
2023-06-14 05:31:27 +0200cheater_(~Username@user/cheater)
2023-06-14 05:31:36 +0200 <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.
2023-06-14 05:31:48 +0200 <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
2023-06-14 05:32:43 +0200phma(phma@2001:5b0:2172:dde8:7d71:8893:2f2:a1ae) (Ping timeout: 255 seconds)
2023-06-14 05:32:43 +0200cyphase(~cyphase@user/cyphase) (Ping timeout: 255 seconds)
2023-06-14 05:33:27 +0200 <arrowhead> probie: thank you for the informative answer.
2023-06-14 05:33:33 +0200 <probie> For interfacing with a database, I use persistent and esqueleto. I'm not the biggest fan of either of those, but they work
2023-06-14 05:34:24 +0200cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2023-06-14 05:34:27 +0200ai5lk(~ai5lk@209-188-121-236.taosnet.com)
2023-06-14 05:34:47 +0200 <arrowhead> yep I use both of those too, very handy
2023-06-14 05:35:27 +0200cheater__(~Username@user/cheater)
2023-06-14 05:35:27 +0200cheater__cheater
2023-06-14 05:36:52 +0200ai5lk(~ai5lk@209-188-121-236.taosnet.com) (Client Quit)
2023-06-14 05:37:51 +0200cyphase(~cyphase@user/cyphase)
2023-06-14 05:38:20 +0200cheater_(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-06-14 05:39:27 +0200notzmv(~zmv@user/notzmv)
2023-06-14 05:39:29 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-06-14 05:39:33 +0200cheater_(~Username@user/cheater)
2023-06-14 05:39:34 +0200cheater_cheater
2023-06-14 05:43:19 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2023-06-14 05:44:00 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-06-14 05:44:00 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
2023-06-14 05:44:26 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2023-06-14 05:44:32 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2023-06-14 05:52:25 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2023-06-14 05:52:40 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2023-06-14 05:53:39 +0200 <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 ?
2023-06-14 05:57:54 +0200oneeyedalien(~oneeyedal@125-63-26-34.ip4.superloop.au)
2023-06-14 05:58:04 +0200oneeyedalien(~oneeyedal@125-63-26-34.ip4.superloop.au) (Remote host closed the connection)
2023-06-14 06:01:41 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-06-14 06:03:16 +0200CadeyXe
2023-06-14 06:07:39 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-06-14 06:08:33 +0200ijqq___(uid603979@id-603979.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2023-06-14 06:08:33 +0200ijqq_(uid603979@id-603979.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2023-06-14 06:12:11 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-06-14 06:14:27 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-06-14 06:14:50 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 06:23:44 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2023-06-14 06:27:46 +0200 <Nosrep> when i'm looking at profiling output does foobar.\ mean a lambda in foobar
2023-06-14 06:28:43 +0200ddellacosta(~ddellacos@146.70.171.139)
2023-06-14 06:29:20 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-06-14 06:30:55 +0200pyrex(~pyrex@user/pyrex)
2023-06-14 06:31:50 +0200ddellaco1(~ddellacos@146.70.165.139) (Ping timeout: 260 seconds)
2023-06-14 06:34:53 +0200phma_(~phma@host-67-44-208-30.hnremote.net) (Read error: Connection reset by peer)
2023-06-14 06:35:02 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2023-06-14 06:35:47 +0200phma_(phma@2001:5b0:210b:8018:30a:b50:188a:5ef0)
2023-06-14 06:36:01 +0200pyrex(~pyrex@user/pyrex) (Read error: Connection reset by peer)
2023-06-14 06:39:16 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2023-06-14 06:40:38 +0200 <c_wraith> Nosrep: uh.. that would be an operator named .\
2023-06-14 06:42:09 +0200 <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
2023-06-14 06:44:27 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value)
2023-06-14 06:45:22 +0200jtbx(~jtbx@user/jtbx) (Quit: Lost terminal)
2023-06-14 06:47:38 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-06-14 06:48:23 +0200jargon(~jargon@184.101.75.235) (Remote host closed the connection)
2023-06-14 06:49:13 +0200tomku(~tomku@user/tomku) (Server closed connection)
2023-06-14 06:49:21 +0200tomku(~tomku@user/tomku)
2023-06-14 06:56:00 +0200trev(~trev@user/trev)
2023-06-14 06:59:59 +0200 <[Leary]> Nosrep: It does.
2023-06-14 07:02:33 +0200 <c_wraith> [Leary]: with what extensions?
2023-06-14 07:06:20 +0200 <[Leary]> c_wraith: No extensions; this is in a *.prof profiling report.
2023-06-14 07:06:37 +0200 <c_wraith> oh. wow. my reading comprehension sure failed there
2023-06-14 07:09:29 +0200shapr(~user@2600:1700:c640:3100:b6fa:cb8d:bd7d:c291) (Ping timeout: 240 seconds)
2023-06-14 07:11:53 +0200CAT_S(apic@brezn3.muc.ccc.de) (Server closed connection)
2023-06-14 07:12:07 +0200CAT_S(apic@brezn3.muc.ccc.de)
2023-06-14 07:13:30 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-06-14 07:15:25 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-06-14 07:20:09 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-06-14 07:21:27 +0200Guest8(~Guest8@2001-b400-e28c-968d-c5ee-e300-cdf0-9a78.emome-ip6.hinet.net)
2023-06-14 07:24:12 +0200ddellacosta(~ddellacos@146.70.171.139) (Ping timeout: 255 seconds)
2023-06-14 07:24:20 +0200chromoblob(~user@37.113.180.121) (Ping timeout: 240 seconds)
2023-06-14 07:33:15 +0200thegeekinside(~thegeekin@189.217.90.138) (Remote host closed the connection)
2023-06-14 07:38:41 +0200[_________](~oos95GWG@user/oos95GWG)
2023-06-14 07:40:44 +0200thegeekinside(~thegeekin@189.217.90.138)
2023-06-14 07:41:19 +0200phma_phma
2023-06-14 07:46:19 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-06-14 07:46:49 +0200 <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
2023-06-14 07:47:16 +0200acidjnk_new3(~acidjnk@p200300d6e7072f9220dcf85561662d75.dip0.t-ipconnect.de)
2023-06-14 07:47:36 +0200chromoblob(~user@37.113.180.121)
2023-06-14 07:51:12 +0200acidjnk_new(~acidjnk@p200300d6e7072f9254d3382c8032cf2b.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-06-14 07:51:29 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-06-14 08:00:31 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-06-14 08:01:29 +0200chromoblob(~user@37.113.180.121) (Ping timeout: 240 seconds)
2023-06-14 08:11:54 +0200mauke(~mauke@user/mauke) (Ping timeout: 255 seconds)
2023-06-14 08:19:05 +0200michalz(~michalz@185.246.207.205)
2023-06-14 08:20:31 +0200falafel(~falafel@2601:482:8003:cd80:e548:7d8c:2862:3dd6)
2023-06-14 08:20:35 +0200mei(~mei@user/mei)
2023-06-14 08:22:06 +0200aweinsto1k(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Server closed connection)
2023-06-14 08:22:18 +0200aweinstock(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com)
2023-06-14 08:22:43 +0200shachaf(~shachaf@user/shachaf) (Server closed connection)
2023-06-14 08:22:51 +0200shachaf(~shachaf@user/shachaf)
2023-06-14 08:23:12 +0200user2(~user@103.206.114.86) (Quit: WeeChat 3.8)
2023-06-14 08:32:01 +0200Co0kie(~Jura@145.224.73.17)
2023-06-14 08:34:18 +0200mncheckm(~mncheck@193.224.205.254)
2023-06-14 08:34:57 +0200phma(phma@2001:5b0:210b:8018:30a:b50:188a:5ef0) (Read error: Connection reset by peer)
2023-06-14 08:35:50 +0200phma(phma@2001:5b0:211c:2af8:caba:1622:ca05:4197)
2023-06-14 08:36:39 +0200acidjnk_new3(~acidjnk@p200300d6e7072f9220dcf85561662d75.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-06-14 08:36:39 +0200xff0x_(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
2023-06-14 08:38:28 +0200xff0x_(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-06-14 08:39:54 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-06-14 08:45:29 +0200falafel(~falafel@2601:482:8003:cd80:e548:7d8c:2862:3dd6) (Ping timeout: 240 seconds)
2023-06-14 08:46:59 +0200bilegeek(~bilegeek@2600:1008:b0ad:3907:5a86:a7b0:fb8b:a72e) (Quit: Leaving)
2023-06-14 08:53:33 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:adaa:7968:23a1:1d20)
2023-06-14 09:09:49 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2023-06-14 09:14:39 +0200acidjnk_new3(~acidjnk@p200300d6e7072f92c01bf8b2f3a32a4b.dip0.t-ipconnect.de)
2023-06-14 09:16:14 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-06-14 09:18:49 +0200fendor(~fendor@2a02:8388:1640:be00:7aca:a77a:4a28:631a)
2023-06-14 09:20:33 +0200fendor(~fendor@2a02:8388:1640:be00:7aca:a77a:4a28:631a) (Remote host closed the connection)
2023-06-14 09:21:02 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-06-14 09:22:18 +0200fendor(~fendor@2a02:8388:1640:be00:7aca:a77a:4a28:631a)
2023-06-14 09:25:27 +0200cheater(~Username@user/cheater)
2023-06-14 09:25:48 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
2023-06-14 09:26:24 +0200xax__(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2023-06-14 09:27:02 +0200mmhat(~mmh@p200300f1c702b008ee086bfffe095315.dip0.t-ipconnect.de)
2023-06-14 09:27:22 +0200mmhat(~mmh@p200300f1c702b008ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit)
2023-06-14 09:27:22 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
2023-06-14 09:29:19 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com)
2023-06-14 09:29:32 +0200taupiqueur2(~taupiqueu@2a02-842a-8180-4601-0906-7ddd-44ff-a642.rev.sfr.net) (Ping timeout: 240 seconds)
2023-06-14 09:31:20 +0200 <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.
2023-06-14 09:32:25 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-06-14 09:33:51 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2023-06-14 09:35:08 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2023-06-14 09:35:09 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-06-14 09:36:16 +0200Luj(~Luj@2a01:e0a:5f9:9681:f71f:fbb2:cbdf:4da0)
2023-06-14 09:37:03 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-06-14 09:37:11 +0200chiselfuse(~chiselfus@user/chiselfuse) (Client Quit)
2023-06-14 09:37:41 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-06-14 09:41:26 +0200juri_(~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 260 seconds)
2023-06-14 09:41:54 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-06-14 09:42:59 +0200taupiqueur2(~taupiqueu@2a02-842a-8180-4601-3041-7107-38e4-822b.rev.sfr.net)
2023-06-14 09:43:44 +0200 <Hecate> taupiqueur2: salut 👋
2023-06-14 09:50:27 +0200zer0bitz(~zer0bitz@user/zer0bitz) (Read error: Connection reset by peer)
2023-06-14 09:50:37 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-06-14 09:51:15 +0200drdo(~drdo@bl8-153-185.dsl.telepac.pt)
2023-06-14 09:51:37 +0200mc47(~mc47@xmonad/TheMC47)
2023-06-14 09:52:02 +0200stallmanator(~stallmana@user/stallmanator) (Quit: Ping timeout (120 seconds))
2023-06-14 09:52:24 +0200stallmanator(~stallmana@user/stallmanator)
2023-06-14 09:53:01 +0200Guest8(~Guest8@2001-b400-e28c-968d-c5ee-e300-cdf0-9a78.emome-ip6.hinet.net) (Quit: Client closed)
2023-06-14 09:55:29 +0200titibandit(~titibandi@user/titibandit)
2023-06-14 09:55:36 +0200gurkenglas(~user@dynamic-046-114-177-119.46.114.pool.telefonica.de)
2023-06-14 09:56:59 +0200zer0bitz(~zer0bitz@user/zer0bitz)
2023-06-14 10:05:01 +0200taupiqueur2(~taupiqueu@2a02-842a-8180-4601-3041-7107-38e4-822b.rev.sfr.net) (Ping timeout: 240 seconds)
2023-06-14 10:05:44 +0200czy(~user@host-140-26.ilcub310.champaign.il.us.clients.pavlovmedia.net)
2023-06-14 10:05:56 +0200chomwitt(~chomwitt@2a02:587:7a0e:cf00:1ac0:4dff:fedb:a3f1)
2023-06-14 10:07:13 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-06-14 10:11:46 +0200shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 260 seconds)
2023-06-14 10:14:56 +0200dcoutts_(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2023-06-14 10:14:56 +0200arrowhead(~arrowhead@2603-7000-9b3f-6934-84fe-c7f9-02f3-6912.res6.spectrum.com) (Read error: Connection reset by peer)
2023-06-14 10:15:19 +0200ft(~ft@p508dbdef.dip0.t-ipconnect.de) (Quit: leaving)
2023-06-14 10:17:39 +0200phma(phma@2001:5b0:211c:2af8:caba:1622:ca05:4197) (Read error: Connection reset by peer)
2023-06-14 10:18:05 +0200phma(~phma@host-67-44-208-54.hnremote.net)
2023-06-14 10:18:06 +0200bontaq(~user@ool-45779b84.dyn.optonline.net)
2023-06-14 10:18:32 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2023-06-14 10:20:57 +0200ec_(~ec@gateway/tor-sasl/ec)
2023-06-14 10:21:26 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-06-14 10:25:35 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-06-14 10:25:45 +0200euandreh(~Thunderbi@189.6.18.7) (Ping timeout: 260 seconds)
2023-06-14 10:28:55 +0200euandreh(~Thunderbi@189.6.18.7)
2023-06-14 10:33:00 +0200juri_(~juri@79.140.121.143)
2023-06-14 10:34:51 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
2023-06-14 10:36:46 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:f078:b941:1c44:5de9)
2023-06-14 10:41:23 +0200defanor(~defanor@tart.uberspace.net) (Quit: .)
2023-06-14 10:41:42 +0200defanor(~defanor@tart.uberspace.net)
2023-06-14 10:42:37 +0200zeenk(~zeenk@2a02:2f04:a106:3c00::7fe)
2023-06-14 10:43:46 +0200kitzman_(~kitzman@user/dekenevs) (Quit: C-x C-c)
2023-06-14 10:44:09 +0200kitzman(~kitzman@user/dekenevs)
2023-06-14 10:44:55 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:f078:b941:1c44:5de9) (Quit: use-value)
2023-06-14 10:48:01 +0200defanor(~defanor@tart.uberspace.net) (Quit: .)
2023-06-14 10:48:45 +0200defanor(~defanor@tart.uberspace.net)
2023-06-14 10:49:01 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:2cf1:36b7:6ec2:d529)
2023-06-14 10:49:47 +0200gehmehgeh(~user@user/gehmehgeh)
2023-06-14 10:55:29 +0200euandreh(~Thunderbi@189.6.18.7) (Ping timeout: 240 seconds)
2023-06-14 10:56:15 +0200accord(uid568320@id-568320.hampstead.irccloud.com)
2023-06-14 11:00:00 +0200chele(~chele@user/chele)
2023-06-14 11:01:18 +0200euandreh(~Thunderbi@189.6.18.7)
2023-06-14 11:05:57 +0200 <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..
2023-06-14 11:05:59 +0200 <eugenrh> So, what do you recommend, some nice readings about the theory?
2023-06-14 11:07:13 +0200 <merijn> eugenrh: There's actually lots of different theories bandied about :p
2023-06-14 11:07:51 +0200 <eugenrh> something for beginners/intermediate level.. perhaps
2023-06-14 11:08:12 +0200 <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
2023-06-14 11:08:47 +0200 <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
2023-06-14 11:08:56 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2023-06-14 11:09:30 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2023-06-14 11:09:49 +0200 <eugenrh> So, I'm looking for the theory that any haskeller should now..
2023-06-14 11:10:20 +0200 <eugenrh> merijn: I'll check that thanks. How about category theory? any readings there?
2023-06-14 11:11:27 +0200 <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
2023-06-14 11:11:31 +0200 <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
2023-06-14 11:11:47 +0200Lord_of_Life_Lord_of_Life
2023-06-14 11:12:09 +0200 <merijn> eugenrh: Also, the Software Foundations book (well, I guess technically series now?) is really good
2023-06-14 11:13:23 +0200 <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
2023-06-14 11:13:33 +0200 <lortabac> that said, I am strongly against the idea that you *need* the theory in order to learn Haskell
2023-06-14 11:14:09 +0200 <lortabac> it's good to learn the theory but it's certainly not required
2023-06-14 11:14:12 +0200 <merijn> I don't think you need it to learn haskell, but I do think it never hurts to study :)
2023-06-14 11:14:29 +0200 <lortabac> yes I agree
2023-06-14 11:14:32 +0200acidjnk_new3(~acidjnk@p200300d6e7072f92c01bf8b2f3a32a4b.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2023-06-14 11:14:55 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-06-14 11:15:11 +0200 <merijn> And if you're interested in underlying theory, TaPL is never a bad choice :D
2023-06-14 11:16:08 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729) (Remote host closed the connection)
2023-06-14 11:17:50 +0200 <[Leary]> @where prereqs
2023-06-14 11:17:50 +0200 <lambdabot> http://www.vex.net/~trebla/haskell/prerequisite.xhtml
2023-06-14 11:18:13 +0200 <[Leary]> eugenrh: Try reading the above; there's not much to it. More than advanced maths, you probably just need practice.
2023-06-14 11:18:29 +0200AlexNoo_AlexNoo
2023-06-14 11:19:25 +0200 <eugenrh> ok
2023-06-14 11:20:32 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 248 seconds)
2023-06-14 11:22:05 +0200bjs(sid190364@user/bjs) ()
2023-06-14 11:22:24 +0200bjs(sid190364@user/bjs)
2023-06-14 11:22:47 +0200polux(~polux@51-15-169-172.rev.poneytelecom.eu)
2023-06-14 11:22:49 +0200 <eugenrh> lortabac: well, I would like also to (better) understand some discussion here, that made me think I'm really missing some theory..
2023-06-14 11:23:03 +0200 <tdammers> there is actually surprisingly little theory that "any haskeller would know".
2023-06-14 11:23:11 +0200 <Daniel[m]123> depends on whether you want to productive or not i guess
2023-06-14 11:23:43 +0200 <tdammers> IME not even that
2023-06-14 11:23:48 +0200 <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
2023-06-14 11:24:03 +0200Nikopol(nikopol@user/astrorigin) (Server closed connection)
2023-06-14 11:24:14 +0200Nikopol(nikopol@user/astrorigin)
2023-06-14 11:25:05 +0200 <lortabac> eugenrh: I mean you could have lots of theoretical discussions around Java too
2023-06-14 11:25:05 +0200 <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.
2023-06-14 11:25:42 +0200 <lortabac> it's just that here there are more people who are interested in the theory
2023-06-14 11:26:06 +0200 <eugenrh> yes, a lot more :)
2023-06-14 11:26:16 +0200 <tdammers> also that Haskell's design has more theoretical foundations behind it than, say, Java
2023-06-14 11:26:37 +0200 <tdammers> so knowing the relevant theory *is* important if you want to discuss design decisions in the language itself
2023-06-14 11:26:53 +0200 <tdammers> or, well, at least it is sometimes
2023-06-14 11:27:55 +0200acidjnk(~acidjnk@p200300d6e7072f92753eec54266ef16c.dip0.t-ipconnect.de)
2023-06-14 11:28:46 +0200 <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"
2023-06-14 11:29:01 +0200 <merijn> )
2023-06-14 11:29:43 +0200 <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
2023-06-14 11:29:49 +0200 <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.
2023-06-14 11:30:43 +0200 <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
2023-06-14 11:31:21 +0200 <eugenrh> I think I've passed that "a bit" phase..
2023-06-14 11:32:31 +0200 <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)
2023-06-14 11:32:56 +0200 <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...
2023-06-14 11:33:38 +0200ncfrecommends the haskell wikibook, as always
2023-06-14 11:33:48 +0200 <merijn> tbh, I don't think there is a universal right way :p
2023-06-14 11:33:53 +0200 <eugenrh> ncf: yes, reading that now
2023-06-14 11:34:10 +0200 <[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.
2023-06-14 11:34:19 +0200 <[Leary]> Haskell is too big.
2023-06-14 11:34:38 +0200 <eugenrh> merijn: trying to avoid a "bad way" :)
2023-06-14 11:35:21 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 11:35:53 +0200 <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.
2023-06-14 11:36:21 +0200 <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..
2023-06-14 11:37:52 +0200 <[Leary]> eugenrh: I wish I had a good link for this, but I don't; I learned LC through play.
2023-06-14 11:38:12 +0200 <eugenrh> tdammers: ok, I understand that it's not 100% translation into the language.. But, as you said, the termnology is used a lot..
2023-06-14 11:38:40 +0200 <tdammers> eugenrh: yes, so learn what the terminology means in Haskell.
2023-06-14 11:39:17 +0200juri_(~juri@79.140.121.143) (Read error: Connection reset by peer)
2023-06-14 11:39:30 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Ping timeout: 240 seconds)
2023-06-14 11:39:44 +0200 <lortabac> TAPL explains lambda calculus quite well, you can skip the formal proofs if you are not interested
2023-06-14 11:39:59 +0200 <lortabac> but it's expensive, it might not be worth if you are only going to read one chapter
2023-06-14 11:40:00 +0200 <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"
2023-06-14 11:40:41 +0200juri_(~juri@79.140.121.143)
2023-06-14 11:40:45 +0200 <tdammers> it's kind of the same thing, but it's not super obvious how the CT definition maps to Haskell
2023-06-14 11:42:12 +0200 <eugenrh> ok, I see in the TAPL's table of contents, sections about lamda calculus
2023-06-14 11:44:37 +0200chromoblob(~user@37.113.180.121)
2023-06-14 11:45:10 +0200kraftwerk28(~kraftwerk@178.62.210.83) (Quit: *disconnects*)
2023-06-14 11:45:41 +0200juri__(~juri@84-19-175-187.pool.ovpn.com)
2023-06-14 11:45:59 +0200juri_(~juri@79.140.121.143) (Ping timeout: 240 seconds)
2023-06-14 11:46:15 +0200kraftwerk28(~kraftwerk@178.62.210.83)
2023-06-14 11:47:07 +0200 <eugenrh> yes, it is expensive
2023-06-14 11:47:45 +0200 <eugenrh> maybe I'll just read about it on wikipedia..
2023-06-14 11:49:32 +0200 <[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).
2023-06-14 11:49:56 +0200chromoblob(~user@37.113.180.121) (Ping timeout: 240 seconds)
2023-06-14 11:50:06 +0200 <eugenrh> thank you!
2023-06-14 11:50:13 +0200 <[Leary]> You'll need to follow that up with a lot of exercises, though.
2023-06-14 12:00:16 +0200caubert(~caubert@user/caubert) (Server closed connection)
2023-06-14 12:00:34 +0200caubert(~caubert@user/caubert)
2023-06-14 12:03:39 +0200 <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..
2023-06-14 12:03:43 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Server closed connection)
2023-06-14 12:04:03 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2023-06-14 12:05:15 +0200laxask(~laxask@cfeld-pcx40162.desy.de)
2023-06-14 12:05:29 +0200fbytez_(~uid@2001:bc8:2117:100::)
2023-06-14 12:05:52 +0200lottaquestions(~nick@2607:fa49:503f:6d00:a5bc:3af4:48cc:9dd6)
2023-06-14 12:06:06 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2023-06-14 12:08:09 +0200xff0x_(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
2023-06-14 12:11:44 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2023-06-14 12:12:26 +0200gehmehgeh(~user@user/gehmehgeh)
2023-06-14 12:14:44 +0200Co0kie(~Jura@145.224.73.17) (Ping timeout: 265 seconds)
2023-06-14 12:22:00 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:1181:6da5:7700:e0d3)
2023-06-14 12:25:42 +0200 <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
2023-06-14 12:26:16 +0200 <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
2023-06-14 12:26:23 +0200koolazer(~koo@user/koolazer) (Server closed connection)
2023-06-14 12:26:35 +0200 <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
2023-06-14 12:26:40 +0200koolazer(~koo@user/koolazer)
2023-06-14 12:27:30 +0200 <Profpatsch> best I can think about is writing very fine-grained parsers and then combining them ad-hoc
2023-06-14 12:27:48 +0200 <ncf> parseFooBaz <|> parseBarBla ?
2023-06-14 12:27:52 +0200 <Profpatsch> I guess HasField will have to do
2023-06-14 12:28:14 +0200 <Profpatsch> ncf: I have a config file which should only annoy the user if they want to use a subcommand that needs a field
2023-06-14 12:28:37 +0200 <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
2023-06-14 12:28:45 +0200 <Profpatsch> same for `cli bar`
2023-06-14 12:28:58 +0200 <Profpatsch> yeah, I think HasField will be good for this
2023-06-14 12:29:29 +0200 <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
2023-06-14 12:30:19 +0200 <Profpatsch> I’ll see if I can get a union operation working
2023-06-14 12:30:53 +0200 <Profpatsch> (the config.json starts with "$schema": "./generated-schema.json" which is auto-updated iff the schema changes
2023-06-14 12:31:03 +0200 <ncf> i'd parse everything into Maybe and let subcommands complain if they get Nothing
2023-06-14 12:31:23 +0200 <Profpatsch> ncf: yeah, that’s another way to do it I guess
2023-06-14 12:31:25 +0200 <Profpatsch> hrm
2023-06-14 12:32:06 +0200 <Profpatsch> HasField is so good, now Haskal only needs compiler support for anonymous structs and we are golden
2023-06-14 12:32:18 +0200 <Profpatsch> *only* :P
2023-06-14 12:33:00 +0200chromoblob(~user@37.113.180.121)
2023-06-14 12:36:20 +0200laxask(~laxask@cfeld-pcx40162.desy.de) (Quit: Client closed)
2023-06-14 12:36:50 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-06-14 12:41:08 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2023-06-14 12:42:50 +0200 <[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?
2023-06-14 12:43:21 +0200 <[exa]> (problem: I change 1 letter in the code -> docker rebuilds everything)
2023-06-14 12:44:19 +0200 <[exa]> spoiler: cabal install --only-dependencies doesn't cut it because docker is unaware of the fact that nothing changed
2023-06-14 12:51:19 +0200__monty__(~toonn@user/toonn)
2023-06-14 13:00:58 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2023-06-14 13:01:49 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net)
2023-06-14 13:03:13 +0200xff0x_(~xff0x@ai098135.d.east.v6connect.net)
2023-06-14 13:03:55 +0200zer0bitz_(~zer0bitz@user/zer0bitz)
2023-06-14 13:03:55 +0200Stone(~Stone@2405:201:c02a:1274:95a:6d70:6567:7cf8)
2023-06-14 13:04:51 +0200zer0bitz(~zer0bitz@user/zer0bitz) (Ping timeout: 255 seconds)
2023-06-14 13:08:16 +0200texasmynsted(~username@99.96.221.112) (Server closed connection)
2023-06-14 13:08:38 +0200texasmynsted(~username@99.96.221.112)
2023-06-14 13:09:32 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-06-14 13:11:46 +0200accord(uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-06-14 13:14:18 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-06-14 13:17:43 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-06-14 13:18:18 +0200zer0bitz(~zer0bitz@user/zer0bitz)
2023-06-14 13:19:01 +0200zer0bitz_(~zer0bitz@user/zer0bitz) (Ping timeout: 240 seconds)
2023-06-14 13:19:23 +0200Stone(~Stone@2405:201:c02a:1274:95a:6d70:6567:7cf8) (Ping timeout: 245 seconds)
2023-06-14 13:22:24 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-06-14 13:36:02 +0200zer0bitz_(~zer0bitz@user/zer0bitz)
2023-06-14 13:36:48 +0200zer0bitz_(~zer0bitz@user/zer0bitz) (Client Quit)
2023-06-14 13:37:08 +0200fbytez_(~uid@2001:bc8:2117:100::) (Changing host)
2023-06-14 13:37:08 +0200fbytez_(~uid@user/fbytez)
2023-06-14 13:38:09 +0200zer0bitz(~zer0bitz@user/zer0bitz) (Ping timeout: 255 seconds)
2023-06-14 13:40:04 +0200laxask(~laxask@cfeld-pcx40162.desy.de)
2023-06-14 13:40:39 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-06-14 13:43:45 +0200 <merijn> I mean, wouldn't the solution be to make docker aware that nothing changed?
2023-06-14 13:45:56 +0200 <hpc> whenever people encounter this problem in other languages, the answer always seems to be making intermediate images
2023-06-14 13:46:32 +0200 <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
2023-06-14 13:46:50 +0200 <hpc> yeah, that too
2023-06-14 13:48:10 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-06-14 13:48:16 +0200laxask(~laxask@cfeld-pcx40162.desy.de) ()
2023-06-14 13:53:29 +0200gascown(~My_user_n@81.208.15.172)
2023-06-14 13:57:05 +0200danse-nr3(~francesco@151.19.254.7)
2023-06-14 13:58:33 +0200byte`(~byte@user/byte)
2023-06-14 13:58:44 +0200taupiqueur2(~taupiqueu@2a02-842a-8180-4601-e9a3-1936-d44b-526b.rev.sfr.net)
2023-06-14 13:59:18 +0200byte(~byte@user/byte) (Ping timeout: 268 seconds)
2023-06-14 13:59:18 +0200byte`byte
2023-06-14 14:02:14 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-06-14 14:02:14 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-06-14 14:02:14 +0200wroathe(~wroathe@user/wroathe)
2023-06-14 14:11:06 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-06-14 14:12:42 +0200laxmik(~user@cfeld-pcx40162.desy.de)
2023-06-14 14:18:45 +0200erisco_(~erisco@d24-141-66-165.home.cgocable.net)
2023-06-14 14:19:01 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 240 seconds)
2023-06-14 14:19:10 +0200erisco_erisco
2023-06-14 14:23:21 +0200danse-nr3(~francesco@151.19.254.7) (Read error: Connection reset by peer)
2023-06-14 14:23:23 +0200danse-nr3_(~francesco@151.35.246.225)
2023-06-14 14:24:44 +0200taupiqueur2(~taupiqueu@2a02-842a-8180-4601-e9a3-1936-d44b-526b.rev.sfr.net) (Ping timeout: 240 seconds)
2023-06-14 14:24:55 +0200taupiqueur2(~taupiqueu@2a02:842a:8180:4601:95a3:46c4:9fe7:ffd7)
2023-06-14 14:27:14 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-06-14 14:38:21 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 14:38:53 +0200laxmikmichals
2023-06-14 14:41:46 +0200Everything(~Everythin@static.208.206.21.65.clients.your-server.de) (Server closed connection)
2023-06-14 14:41:55 +0200Everything(~Everythin@static.208.206.21.65.clients.your-server.de)
2023-06-14 14:43:00 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Ping timeout: 260 seconds)
2023-06-14 14:43:23 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-06-14 14:45:44 +0200hippoid(~hippoid@c-98-213-162-40.hsd1.il.comcast.net) (Remote host closed the connection)
2023-06-14 14:46:06 +0200hippoid(~hippoid@c-98-213-162-40.hsd1.il.comcast.net)
2023-06-14 14:48:50 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2023-06-14 14:51:06 +0200danse-nr3_(~francesco@151.35.246.225) (Ping timeout: 268 seconds)
2023-06-14 14:56:42 +0200cheater_(~Username@user/cheater)
2023-06-14 14:59:39 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal)
2023-06-14 15:00:00 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-06-14 15:00:30 +0200cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2023-06-14 15:00:39 +0200cheater_cheater
2023-06-14 15:02:01 +0200chiselfuse(~chiselfus@user/chiselfuse) (Quit: leaving)
2023-06-14 15:02:02 +0200barcisz(~barcisz@79.191.35.59.ipv4.supernova.orange.pl)
2023-06-14 15:02:39 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-06-14 15:05:29 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-06-14 15:06:25 +0200jero98772(~jero98772@2800:484:1d7f:5d36::2)
2023-06-14 15:08:04 +0200danse-nr3_(~francesco@151.35.246.225)
2023-06-14 15:09:10 +0200Pickchea(~private@user/pickchea)
2023-06-14 15:16:57 +0200shef(~ai5lk@209-188-121-236.taosnet.com)
2023-06-14 15:18:28 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-06-14 15:18:57 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Remote host closed the connection)
2023-06-14 15:19:25 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-06-14 15:20:12 +0200shef(~ai5lk@209-188-121-236.taosnet.com) (Client Quit)
2023-06-14 15:23:08 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-06-14 15:25:08 +0200acidjnk(~acidjnk@p200300d6e7072f92753eec54266ef16c.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2023-06-14 15:25:51 +0200shef(~ai5lk@209-188-121-236.taosnet.com)
2023-06-14 15:26:24 +0200earthy(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Ping timeout: 248 seconds)
2023-06-14 15:39:26 +0200earthy(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net)
2023-06-14 15:41:04 +0200ddellacosta(~ddellacos@143.244.47.89)
2023-06-14 15:45:33 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2023-06-14 15:48:33 +0200gehmehgeh(~user@user/gehmehgeh)
2023-06-14 15:50:18 +0200chromoblob(~user@37.113.180.121) (Ping timeout: 265 seconds)
2023-06-14 15:50:50 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2023-06-14 15:51:21 +0200Ross[m]1(~zhichuche@2001:470:69fc:105::3:584b) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200ibizaman[m](~ibizamanm@2001:470:69fc:105::a3d) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200lilpotent_jlemen(~lilpotent@2001:470:69fc:105::3:6eb6) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200DustinStiles[m](~duwstiles@2001:470:69fc:105::3:699b) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200ocharles[m](~ocharlesm@2001:470:69fc:105::3:5899) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200oak-(~oak-@2001:470:69fc:105::fcd) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200jade[m](~jade256th@2001:470:69fc:105::3:58df) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200teo(~teo@user/teo) (Write error: Connection reset by peer)
2023-06-14 15:51:21 +0200Daniel[m]123(~danieltan@2001:470:69fc:105::3:6e5e) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200tbidne[m](~tbidnemat@2001:470:69fc:105::3:6d42) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200aerc[m](~aercmatri@2001:470:69fc:105::3:67b9) (Read error: Connection reset by peer)
2023-06-14 15:51:21 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d) (Write error: Connection reset by peer)
2023-06-14 15:51:22 +0200somerandomnick[m(~somerando@2001:470:69fc:105::3:4f2e) (Write error: Connection reset by peer)
2023-06-14 15:51:22 +0200jorwas[m](~jorwasmat@2001:470:69fc:105::3:60e7) (Write error: Connection reset by peer)
2023-06-14 15:51:22 +0200kleenestar[m](~kleenesta@2001:470:69fc:105::3:6d78) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200Clinton[m](~clintonme@2001:470:69fc:105::2:31d4) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200ozkutuk[m](~ozkutuk@2001:470:69fc:105::2:9af8) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Write error: Connection reset by peer)
2023-06-14 15:51:22 +0200ners[m](~nersnixos@2001:470:69fc:105::3:648b) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200supersven[m](~supersven@2001:470:69fc:105::31b6) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200zfnmxt(~zfnmxt@user/zfnmxt) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200polykernel[m](~polykerne@user/polykernel) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200xrvdg[m](~xrvdgmatr@2001:470:69fc:105::3:625a) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200romes[m](~romesmatr@2001:470:69fc:105::2:1660) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200shapr[m](~shaprcofr@2001:470:69fc:105::2:d107) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200aaronv(~aaronv@user/aaronv) (Read error: Connection reset by peer)
2023-06-14 15:51:22 +0200MangoIV[m](~mangoivma@2001:470:69fc:105::2:8417) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200jmcantrell(~jmcantrel@user/jmcantrell) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200JensPetersen[m](~juhp@2001:470:69fc:105::6e9) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200Matthew|m(~arathorn@2001:470:69fc:105::1f) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200Null_A[m](~jasonjckn@2001:470:69fc:105::bb85) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200m1-s[m](~m1-smatri@2001:470:69fc:105::2:39da) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200geekosaur[m](~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200elevenkb(~elevenkb@2001:470:69fc:105::2:cb89) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200hsiktas[m](~hsiktasm]@2001:470:69fc:105::30d4) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200eldritchcookie[m(~eldritchc@2001:470:69fc:105::2:d53c) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200hellwolf[m](~hellwolfm@2001:470:69fc:105::3:6a4) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200Inst[m](~instrmatr@2001:470:69fc:105::1:903e) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200SeanKing[m](~seankingm@2001:470:69fc:105::cf9c) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200alanz(~alanz@2001:470:69fc:105::2:49a6) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200Deide(~deide@user/deide) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200chreekat(~chreekat@2001:470:69fc:105::16b5) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200kadoban(~kadoban@user/kadoban) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200end-(~end@user/end/x-0094621) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200akadude[m](~akadudema@2001:470:69fc:105::2:5bf7) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200zebrag[m](~inkbottle@2001:470:69fc:105::2ff5) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200Las[m]1(~lasmatrix@2001:470:69fc:105::74e) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200ormaaaj(~ormaaj@user/ormaaj) (Read error: Connection reset by peer)
2023-06-14 15:51:23 +0200bgamari[m](~bgamari@2001:470:69fc:105::c7b9) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200nicm[m](~nicmollel@2001:470:69fc:105::1:feeb) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200joyfulmantis[m](~joyfulman@2001:470:69fc:105::3:400a) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200peddie(~peddie@2001:470:69fc:105::25d) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200fgaz(~fgaz@2001:470:69fc:105::842) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200sm(~sm@plaintextaccounting/sm) (Write error: Connection reset by peer)
2023-06-14 15:51:23 +0200elvishjerricco(~elvishjer@2001:470:69fc:105::6172) (Read error: Connection reset by peer)
2023-06-14 15:51:25 +0200paulapatience(~paulapati@2001:470:69fc:105::16a4) (Read error: Connection reset by peer)
2023-06-14 15:54:32 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 240 seconds)
2023-06-14 15:54:42 +0200hexology(~hexology@user/hexology)
2023-06-14 15:56:01 +0200Hafydd(~Hafydd@user/hafydd) (Ping timeout: 240 seconds)
2023-06-14 15:57:17 +0200MangoIV[m](~mangoivma@2001:470:69fc:105::2:8417)
2023-06-14 15:57:17 +0200 <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?
2023-06-14 15:57:17 +0200 <MangoIV[m]> perhaps they are not fast thought
2023-06-14 15:57:17 +0200 <MangoIV[m]> * perhaps they are not fast though
2023-06-14 15:57:30 +0200elain4(~textual@static-71-251-226-194.rcmdva.fios.verizon.net)
2023-06-14 15:58:54 +0200Hafydd(~Hafydd@user/hafydd)
2023-06-14 15:59:19 +0200peddie(~peddie@2001:470:69fc:105::25d)
2023-06-14 16:00:43 +0200jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab)
2023-06-14 16:00:43 +0200 <jean-paul[m]> [exa]: You can build your Haskell and Docker images with Nix and you'll get pretty good caching properties.
2023-06-14 16:00:58 +0200 <jean-paul[m]> As a bonus, this is a useful step towards getting rid of your Docker images too ;)
2023-06-14 16:01:11 +0200 <merijn> By replacing them with Nix >.>
2023-06-14 16:01:39 +0200 <merijn> I'm not convinced that's great, unless you wanted to switch careers to "nix infrastructure maintainer" at your company :p
2023-06-14 16:04:34 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-06-14 16:04:49 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-06-14 16:05:37 +0200cheater_(~Username@user/cheater)
2023-06-14 16:06:29 +0200azimut_(~azimut@gateway/tor-sasl/azimut)
2023-06-14 16:06:43 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2023-06-14 16:07:43 +0200cheater__(~Username@user/cheater)
2023-06-14 16:09:34 +0200gehmehgeh(~user@user/gehmehgeh)
2023-06-14 16:09:53 +0200juri__juri_
2023-06-14 16:09:55 +0200cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2023-06-14 16:11:59 +0200cheater__(~Username@user/cheater) (Ping timeout: 246 seconds)
2023-06-14 16:12:03 +0200cheater_(~Username@user/cheater) (Ping timeout: 260 seconds)
2023-06-14 16:14:05 +0200chromoblob(~user@37.113.180.121)
2023-06-14 16:16:00 +0200 <Profpatsch> MangoIV[m]: they are neither fast nor ergonomics
2023-06-14 16:16:01 +0200fgaz(~fgaz@2001:470:69fc:105::842)
2023-06-14 16:16:01 +0200Null_A[m](~jasonjckn@2001:470:69fc:105::bb85)
2023-06-14 16:16:01 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2023-06-14 16:16:01 +0200ocharles[m](~ocharlesm@2001:470:69fc:105::3:5899)
2023-06-14 16:16:01 +0200alanz(~alanz@2001:470:69fc:105::2:49a6)
2023-06-14 16:16:01 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2023-06-14 16:16:01 +0200sm(~sm@plaintextaccounting/sm)
2023-06-14 16:16:02 +0200 <Profpatsch> -s
2023-06-14 16:16:02 +0200nomagno(~nomagno@2001:470:69fc:105::c1f0)
2023-06-14 16:16:03 +0200Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2023-06-14 16:16:03 +0200Deide(~deide@user/deide)
2023-06-14 16:16:03 +0200smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2023-06-14 16:16:03 +0200ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2023-06-14 16:16:03 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2023-06-14 16:16:03 +0200jmcantrell(~jmcantrel@user/jmcantrell)
2023-06-14 16:16:09 +0200gurkenglas(~user@dynamic-046-114-177-119.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-06-14 16:16:23 +0200 <Profpatsch> And they tend to trigger compiler regressions
2023-06-14 16:17:05 +0200 <Profpatsch> MangoIV[m]: I released our workaround recently, which is reasonably nice to use in practical projects https://hackage.haskell.org/package/pa-label
2023-06-14 16:17:50 +0200 <Profpatsch> (see README for explanation)
2023-06-14 16:17:54 +0200Pickchea(~private@user/pickchea) (Ping timeout: 255 seconds)
2023-06-14 16:20:33 +0200user2(~user@103.206.114.126)
2023-06-14 16:20:33 +0200user2wns
2023-06-14 16:20:54 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2023-06-14 16:23:37 +0200cheater__(~Username@user/cheater)
2023-06-14 16:23:37 +0200cheater__cheater
2023-06-14 16:26:57 +0200JensPetersen[m](~juhp@2001:470:69fc:105::6e9)
2023-06-14 16:26:58 +0200jorwas[m](~jorwasmat@2001:470:69fc:105::3:60e7)
2023-06-14 16:26:58 +0200ormaaaj(~ormaaj@user/ormaaj)
2023-06-14 16:26:58 +0200Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac)
2023-06-14 16:26:58 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2023-06-14 16:26:58 +0200Matthew|m(~arathorn@2001:470:69fc:105::1f)
2023-06-14 16:26:58 +0200chreekat(~chreekat@2001:470:69fc:105::16b5)
2023-06-14 16:26:58 +0200elevenkb(~elevenkb@2001:470:69fc:105::2:cb89)
2023-06-14 16:26:58 +0200VarikValefor[m](~varikvale@2001:470:69fc:105::a5d)
2023-06-14 16:26:58 +0200bgamari[m](~bgamari@2001:470:69fc:105::c7b9)
2023-06-14 16:26:59 +0200supersven[m](~supersven@2001:470:69fc:105::31b6)
2023-06-14 16:26:59 +0200zebrag[m](~inkbottle@2001:470:69fc:105::2ff5)
2023-06-14 16:26:59 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2023-06-14 16:26:59 +0200paulapatience(~paulapati@2001:470:69fc:105::16a4)
2023-06-14 16:26:59 +0200elvishjerricco(~elvishjer@2001:470:69fc:105::6172)
2023-06-14 16:26:59 +0200shapr[m](~shaprcofr@2001:470:69fc:105::2:d107)
2023-06-14 16:26:59 +0200hsiktas[m](~hsiktasm]@2001:470:69fc:105::30d4)
2023-06-14 16:27:00 +0200kosmikus[m](~andresloe@2001:470:69fc:105::95d)
2023-06-14 16:27:00 +0200ozkutuk[m](~ozkutuk@2001:470:69fc:105::2:9af8)
2023-06-14 16:27:00 +0200geekosaur[m](~geekosaur@xmonad/geekosaur)
2023-06-14 16:27:00 +0200joyfulmantis[m](~joyfulman@2001:470:69fc:105::3:400a)
2023-06-14 16:27:00 +0200Artem[m](~artemtype@2001:470:69fc:105::75b)
2023-06-14 16:27:01 +0200zfnmxt(~zfnmxt@user/zfnmxt)
2023-06-14 16:27:01 +0200nicm[m](~nicmollel@2001:470:69fc:105::1:feeb)
2023-06-14 16:27:01 +0200kadoban(~kadoban@user/kadoban)
2023-06-14 16:27:01 +0200end-(~end@2001:470:69fc:105::3:673f)
2023-06-14 16:27:01 +0200SeanKing[m](~seankingm@2001:470:69fc:105::cf9c)
2023-06-14 16:27:10 +0200tbidne[m](~tbidnemat@2001:470:69fc:105::3:6d42)
2023-06-14 16:27:10 +0200Clinton[m](~clintonme@2001:470:69fc:105::2:31d4)
2023-06-14 16:27:10 +0200m1-s[m](~m1-smatri@2001:470:69fc:105::2:39da)
2023-06-14 16:27:11 +0200aaronv(~aaronv@user/aaronv)
2023-06-14 16:27:45 +0200kleenestar[m](~kleenesta@2001:470:69fc:105::3:6d78)
2023-06-14 16:27:46 +0200aerc[m](~aercmatri@2001:470:69fc:105::3:67b9)
2023-06-14 16:27:46 +0200oak-(~oak-@2001:470:69fc:105::fcd)
2023-06-14 16:27:47 +0200Daniel[m]1(~danieltan@2001:470:69fc:105::3:6e5e)
2023-06-14 16:27:47 +0200ibizaman[m](~ibizamanm@2001:470:69fc:105::a3d)
2023-06-14 16:27:47 +0200ners[m](~nersnixos@2001:470:69fc:105::3:648b)
2023-06-14 16:27:48 +0200somerandomnick[m(~somerando@2001:470:69fc:105::3:4f2e)
2023-06-14 16:27:49 +0200lilpotent_jlemen(~lilpotent@2001:470:69fc:105::3:6eb6)
2023-06-14 16:30:23 +0200barcisz(~barcisz@79.191.35.59.ipv4.supernova.orange.pl) (Quit: Client closed)
2023-06-14 16:36:19 +0200chromoblob(~user@37.113.180.121) (Ping timeout: 260 seconds)
2023-06-14 16:37:51 +0200shef(~ai5lk@209-188-121-236.taosnet.com) (Quit: WeeChat 3.8)
2023-06-14 16:39:49 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 16:44:15 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Ping timeout: 260 seconds)
2023-06-14 16:44:25 +0200danse-nr3_(~francesco@151.35.246.225) (Read error: Connection reset by peer)
2023-06-14 16:45:22 +0200danse-nr3_(~francesco@151.43.246.222)
2023-06-14 16:45:25 +0200ijqq_(uid603979@id-603979.helmsley.irccloud.com)
2023-06-14 16:46:13 +0200Pickchea(~private@user/pickchea)
2023-06-14 16:47:11 +0200azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2023-06-14 16:47:41 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-06-14 16:48:22 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-06-14 16:51:20 +0200gehmehgeh(~user@user/gehmehgeh)
2023-06-14 16:51:58 +0200 <ijqq_> http://sprunge.us/am6An7
2023-06-14 16:51:58 +0200 <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?
2023-06-14 16:54:10 +0200 <merijn> ijqq_: ok, so first of all name shadowing is not inherently an error (although usually best avoided), there's 2 solutions
2023-06-14 16:54:32 +0200 <merijn> ijqq_: don't reuse the 'x' variable in the pattern, i.e. change the case line to 'c | isDigit c'
2023-06-14 16:54:45 +0200 <merijn> ijqq_: Alternatively, use a wildcard and do '_ | isDigit x'
2023-06-14 16:54:58 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-06-14 16:55:11 +0200 <ijqq_> Oh, so c will still be referring to the value of x?
2023-06-14 16:55:31 +0200 <geekosaur> yes
2023-06-14 16:55:32 +0200 <merijn> ijqq_: the pattern refers to whatever is between 'case ? of'
2023-06-14 16:55:54 +0200 <merijn> ijqq_: so "case x of x -> " introduces a new variable 'x' that has the same value as the old x
2023-06-14 16:56:14 +0200 <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)
2023-06-14 16:57:21 +0200 <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.
2023-06-14 16:57:33 +0200 <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'
2023-06-14 16:57:42 +0200 <merijn> eh, assign the value to 'c'
2023-06-14 16:58:12 +0200 <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
2023-06-14 16:58:46 +0200 <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
2023-06-14 16:59:58 +0200 <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?
2023-06-14 17:00:27 +0200 <merijn> tbh, I think they're about equal.
2023-06-14 17:01:06 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-06-14 17:03:34 +0200 <geekosaur> they should even produce the same core
2023-06-14 17:03:47 +0200romes[m](~romesmatr@2001:470:69fc:105::2:1660)
2023-06-14 17:04:01 +0200jade[m]1(~jade256th@2001:470:69fc:105::3:58df)
2023-06-14 17:04:09 +0200Sgeo(~Sgeo@user/sgeo)
2023-06-14 17:04:14 +0200akadude[m](~akadudema@2001:470:69fc:105::2:5bf7)
2023-06-14 17:04:18 +0200 <merijn> Well, I was thinking that the wildcard can break if you refactor the function arguments and the explicit binding won't
2023-06-14 17:04:25 +0200 <merijn> but that seemed like such a niche nitpick
2023-06-14 17:04:29 +0200marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2023-06-14 17:04:44 +0200xrvdg[m](~xrvdgmatr@2001:470:69fc:105::3:625a)
2023-06-14 17:05:29 +0200teo(~teo@user/teo)
2023-06-14 17:05:41 +0200Inst[m](~instrmatr@2001:470:69fc:105::1:903e)
2023-06-14 17:05:53 +0200eldritchcookie[m(~eldritchc@2001:470:69fc:105::2:d53c)
2023-06-14 17:06:36 +0200hellwolf[m](~hellwolfm@2001:470:69fc:105::3:6a4)
2023-06-14 17:06:52 +0200Las[m]1(~lasmatrix@2001:470:69fc:105::74e)
2023-06-14 17:07:14 +0200pie_(~pie_bnc@user/pie/x-2818909) ()
2023-06-14 17:07:37 +0200Ross[m](~zhichuche@2001:470:69fc:105::3:584b)
2023-06-14 17:07:49 +0200DustinStiles[m](~duwstiles@2001:470:69fc:105::3:699b)
2023-06-14 17:07:49 +0200polykernel[m](~polykerne@user/polykernel)
2023-06-14 17:07:50 +0200pie_(~pie_bnc@user/pie/x-2818909)
2023-06-14 17:10:40 +0200pie_(~pie_bnc@user/pie/x-2818909) (Client Quit)
2023-06-14 17:11:02 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-06-14 17:13:42 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:adaa:7968:23a1:1d20) (Quit: WeeChat 2.8)
2023-06-14 17:17:02 +0200gascown(~My_user_n@81.208.15.172) (Quit: WeeChat 3.8)
2023-06-14 17:17:43 +0200shapr(~user@2600:1700:c640:3100:3dca:cf49:f271:c6b2)
2023-06-14 17:19:14 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-06-14 17:24:05 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-06-14 17:24:18 +0200nyc(~nyc@user/nyc)
2023-06-14 17:24:20 +0200pie_(~pie_bnc@user/pie/x-2818909)
2023-06-14 17:27:38 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 17:28:46 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2023-06-14 17:32:23 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.8)
2023-06-14 17:34:43 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2023-06-14 17:35:01 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2023-06-14 17:43:04 +0200Nosrep(~Nosrep@user/nosrep) (Remote host closed the connection)
2023-06-14 17:43:36 +0200Nosrep(~Nosrep@user/nosrep)
2023-06-14 17:44:02 +0200chromoblob(~user@37.113.180.121)
2023-06-14 17:46:03 +0200elain4(~textual@static-71-251-226-194.rcmdva.fios.verizon.net) (Quit: Textual IRC Client: www.textualapp.com)
2023-06-14 17:48:13 +0200zeenk(~zeenk@2a02:2f04:a106:3c00::7fe) (Quit: Konversation terminated!)
2023-06-14 17:49:00 +0200acidjnk(~acidjnk@p200300d6e7072f92b0f51e98686b2908.dip0.t-ipconnect.de)
2023-06-14 17:53:02 +0200chele(~chele@user/chele) (Remote host closed the connection)
2023-06-14 17:54:33 +0200michals(~user@cfeld-pcx40162.desy.de) (ERC (IRC client for Emacs 26.3))
2023-06-14 17:54:33 +0200073AAK9LE(~oac@72-50-214-210.fttp.usinternet.com)
2023-06-14 18:01:56 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2023-06-14 18:04:25 +0200Pickchea(~private@user/pickchea)
2023-06-14 18:08:08 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-06-14 18:08:26 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
2023-06-14 18:11:54 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2023-06-14 18:12:02 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-06-14 18:18:41 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2023-06-14 18:19:27 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Quit: WeeChat 3.8)
2023-06-14 18:26:45 +0200073AAK9LEoac
2023-06-14 18:27:21 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 18:27:22 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:1181:6da5:7700:e0d3) (Read error: Connection reset by peer)
2023-06-14 18:31:28 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.8)
2023-06-14 18:32:08 +0200mauke(~mauke@user/mauke)
2023-06-14 18:39:38 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-06-14 18:40:27 +0200cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2023-06-14 18:43:53 +0200chomwitt(~chomwitt@2a02:587:7a0e:cf00:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
2023-06-14 18:52:50 +0200zaidhaan(~zai@2001:f40:960:1c54:3c0f:370:d2d1:4fb9)
2023-06-14 18:53:38 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:2cf1:36b7:6ec2:d529) (Remote host closed the connection)
2023-06-14 18:53:57 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:2cf1:36b7:6ec2:d529)
2023-06-14 18:54:59 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-06-14 18:57:23 +0200ystael(~ystael@user/ystael) (Server closed connection)
2023-06-14 18:57:38 +0200ystael(~ystael@user/ystael)
2023-06-14 18:59:56 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-06-14 18:59:56 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-06-14 18:59:56 +0200wroathe(~wroathe@user/wroathe)
2023-06-14 19:00:14 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2023-06-14 19:04:41 +0200danse-nr3_(~francesco@151.43.246.222) (Ping timeout: 256 seconds)
2023-06-14 19:05:20 +0200mud(~mud@user/kadoban)
2023-06-14 19:06:57 +0200ripspin(~chatzilla@1.145.195.123)
2023-06-14 19:08:24 +0200wns(~user@103.206.114.126) (Quit: WeeChat 3.8)
2023-06-14 19:09:36 +0200danse-nr3_(~francesco@151.43.246.222)
2023-06-14 19:21:58 +0200titibandit(~titibandi@user/titibandit)
2023-06-14 19:24:39 +0200CAT_S(apic@brezn3.muc.ccc.de) (Ping timeout: 255 seconds)
2023-06-14 19:25:46 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
2023-06-14 19:31:27 +0200pavonia(~user@user/siracusa)
2023-06-14 19:31:30 +0200oac(~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac)
2023-06-14 19:31:45 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2023-06-14 19:31:46 +0200oac(~oac@72-50-214-210.fttp.usinternet.com)
2023-06-14 19:36:21 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
2023-06-14 19:46:45 +0200danse-nr3_(~francesco@151.43.246.222) (Ping timeout: 240 seconds)
2023-06-14 19:47:42 +0200hisa38(~hisa38@104-181-102-238.lightspeed.wepbfl.sbcglobal.net)
2023-06-14 19:49:20 +0200cafkafk(~cafkafk@fsf/member/cafkafk) (Ping timeout: 240 seconds)
2023-06-14 19:51:13 +0200jrm(~jrm@user/jrm) (Server closed connection)
2023-06-14 19:51:30 +0200jrm(~jrm@user/jrm)
2023-06-14 19:52:03 +0200cafkafk(~cafkafk@fsf/member/cafkafk)
2023-06-14 19:53:56 +0200raym(~ray@user/raym) (Ping timeout: 260 seconds)
2023-06-14 19:55:37 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-06-14 19:57:16 +0200kritty(~crumb@c-76-155-235-153.hsd1.co.comcast.net)
2023-06-14 19:57:38 +0200nitrix(~nitrix@user/nitrix)
2023-06-14 19:57:42 +0200cafkafk(~cafkafk@fsf/member/cafkafk) (Quit: WeeChat 3.6)
2023-06-14 20:02:00 +0200laxmik(~laxmik@2a01:c23:903b:ff00:542e:56dc:fc4:bc71)
2023-06-14 20:03:09 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-06-14 20:06:29 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-06-14 20:06:30 +0200 <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)
2023-06-14 20:08:38 +0200 <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 :(
2023-06-14 20:09:38 +0200__monty__(~toonn@user/toonn)
2023-06-14 20:09:53 +0200 <EvanR> my reaction to that is writing to and from Int explicitly is a better way xD
2023-06-14 20:10:41 +0200 <kritty> lmfao absolutely. this is the best i could come up with. probably not using it in this state lol
2023-06-14 20:11:50 +0200oac(~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac)
2023-06-14 20:12:24 +0200oac__(~oac@72-50-214-210.fttp.usinternet.com)
2023-06-14 20:17:31 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-06-14 20:18:57 +0200 <mauke> I'd say that's not an enum in the haskell sense, so I wouldn't provide an Enum instance
2023-06-14 20:21:49 +0200 <kritty> oh god, you're right. `succ x` could be an error while `succ (succ x)` wouldn't. i need sleep.
2023-06-14 20:22:22 +0200 <mauke> sleep (sleep x)
2023-06-14 20:23:37 +0200cafkafk(~cafkafk@fsf/member/cafkafk)
2023-06-14 20:23:37 +0200 <geekosaur> I can't even see why you'd want it to be a Haskell enum
2023-06-14 20:23:50 +0200 <geekosaur> C enum, sure, but C enums aren't Haskell enums
2023-06-14 20:24:26 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
2023-06-14 20:26:44 +0200dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net)
2023-06-14 20:30:59 +0200 <monochrom> I had great fun telling students about C enum being fake enum.
2023-06-14 20:31:25 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 20:31:42 +0200 <mauke> "enum" is the keyword used to declare constants in C
2023-06-14 20:31:59 +0200 <mauke> for example: enum { BUF_SIZE = 1024 };
2023-06-14 20:32:08 +0200 <monochrom> enum e1 {X, Y}; enum e2 {A, B}; enum e1 v1 = A; enum e2 v2 = X; enum e1 i = 10000;
2023-06-14 20:33:15 +0200 <monochrom> And then I went on to typedef enum e1 e2; typedef enum e2 e1; But that's for another day. :)
2023-06-14 20:33:34 +0200 <Cale> Haskell's Enum should also be two classes though.
2023-06-14 20:33:56 +0200 <Cale> Putting succ and pred in with the functions that interpret the special list syntaxes is a bit weird.
2023-06-14 20:34:44 +0200 <kritty> circular Enums >:3
2023-06-14 20:39:35 +0200smalltalkman(uid545680@2a03:5180:f:4::8:5390) (Quit: Connection closed for inactivity)
2023-06-14 20:40:46 +0200 <chromoblob> > [()..]
2023-06-14 20:40:48 +0200 <lambdabot> [()]
2023-06-14 20:40:57 +0200 <chromoblob> > [(),()..]
2023-06-14 20:40:58 +0200 <lambdabot> [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),...
2023-06-14 20:41:30 +0200notzmv(~zmv@user/notzmv) (Read error: Connection reset by peer)
2023-06-14 20:42:09 +0200 <chromoblob> > [False..]
2023-06-14 20:42:10 +0200 <lambdabot> <hint>:1:9: error: parse error on input ‘]’
2023-06-14 20:42:29 +0200 <monochrom> You probably need a space between False and ..
2023-06-14 20:42:50 +0200 <monochrom> lest it means module False operator .
2023-06-14 20:43:26 +0200 <chromoblob> oh
2023-06-14 20:43:28 +0200 <mauke> > [Prelude.False..]
2023-06-14 20:43:28 +0200 <chromoblob> > [False ..]
2023-06-14 20:43:29 +0200 <lambdabot> <hint>:1:17: error: parse error on input ‘]’
2023-06-14 20:43:29 +0200 <lambdabot> [False,True]
2023-06-14 20:43:37 +0200 <chromoblob> > [False,True ..]
2023-06-14 20:43:37 +0200 <mauke> this would've worked in Haskell 98
2023-06-14 20:43:38 +0200 <lambdabot> [False,True]
2023-06-14 20:44:26 +0200ripspin(~chatzilla@1.145.195.123) (Remote host closed the connection)
2023-06-14 20:44:49 +0200 <chromoblob> > [True,False ..]
2023-06-14 20:44:50 +0200 <lambdabot> [True,False]
2023-06-14 20:45:12 +0200 <Rembane> arrowhead: No worries. Good luck! :)
2023-06-14 20:45:58 +0200 <mauke> enum Boolean { TRUE, FALSE, FILE_NOT_FOUND };
2023-06-14 20:47:25 +0200 <EvanR> that's what I immediately though of when kritty's enum consisted of numbers 0, 1, and 3
2023-06-14 20:54:56 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-06-14 20:57:52 +0200 <laxmik> instance Enum Void where {fromEnum = absurd; toEnum _ = undefined }
2023-06-14 20:58:32 +0200 <EvanR> toEnum = 1/0
2023-06-14 21:00:42 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-06-14 21:00:57 +0200gurkenglas(~user@dynamic-046-114-177-119.46.114.pool.telefonica.de)
2023-06-14 21:04:09 +0200emergence(emergence@2607:5300:60:5910:dcad:beff:feef:5bc)
2023-06-14 21:06:03 +0200 <[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
2023-06-14 21:10:18 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729)
2023-06-14 21:10:24 +0200laxmik(~laxmik@2a01:c23:903b:ff00:542e:56dc:fc4:bc71) (Quit: Client closed)
2023-06-14 21:11:58 +0200laxmik(~laxmik@2a01:c23:903b:ff00:542e:56dc:fc4:bc71)
2023-06-14 21:12:36 +0200kritty(~crumb@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Leaving)
2023-06-14 21:13:22 +0200 <[exa]> oh actually
2023-06-14 21:13:31 +0200 <[exa]> https://github.com/haskell/cabal/issues/7416#issuecomment-851389809
2023-06-14 21:13:44 +0200 <[exa]> this does it.
2023-06-14 21:18:42 +0200notzmv(~zmv@user/notzmv)
2023-06-14 21:20:43 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-06-14 21:21:47 +0200ft(~ft@p508dbdef.dip0.t-ipconnect.de)
2023-06-14 21:25:32 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2023-06-14 21:27:33 +0200kimiamania6(~65804703@user/kimiamania) (Server closed connection)
2023-06-14 21:27:55 +0200kimiamania6(~65804703@user/kimiamania)
2023-06-14 21:28:10 +0200 <chromoblob> laxmik: what should enumFrom and friends return, empty or non-empty list?
2023-06-14 21:28:39 +0200 <chromoblob> for Void
2023-06-14 21:29:49 +0200 <EvanR> a non-empty list of Void sounds wrong very wrong
2023-06-14 21:30:28 +0200 <laxmik> enumFrom and friends need a Void, which cannot be provided..
2023-06-14 21:33:40 +0200 <chromoblob> oh, so no list at all
2023-06-14 21:34:02 +0200 <chromoblob> but maybe it could be empty list
2023-06-14 21:34:41 +0200ai5lk(~ai5lk@209-188-121-236.taosnet.com)
2023-06-14 21:34:45 +0200 <EvanR> it could be anything because absurd
2023-06-14 21:35:40 +0200 <monochrom> An empty list sounds fine.
2023-06-14 21:36:52 +0200 <monochrom> But Void -> Whatever allows you to do whatever. This applies to Void -> [Void] too.
2023-06-14 21:36:59 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-06-14 21:37:14 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-06-14 21:37:56 +0200 <monochrom> I wouldn't mind if Void meant "infinite information" so enumFrom would give an infinite list of undefineds.
2023-06-14 21:40:08 +0200 <ncf> ?
2023-06-14 21:41:14 +0200 <EvanR> like negative infinite temperature?
2023-06-14 21:41:31 +0200 <mauke> :t absurd
2023-06-14 21:41:32 +0200 <lambdabot> Void -> a
2023-06-14 21:41:36 +0200 <mauke> looks infinite to me
2023-06-14 21:42:13 +0200 <EvanR> or is this the same abuse as 'finite means non-zero'
2023-06-14 21:42:27 +0200 <EvanR> i.e. infinite = zero
2023-06-14 21:42:38 +0200 <monochrom> Consider [Shannon's] information theory.
2023-06-14 21:42:43 +0200cheater(~Username@user/cheater)
2023-06-14 21:43:09 +0200 <monochrom> closer to impossible = more information
2023-06-14 21:43:54 +0200 <monochrom> And yeah since Void->a allows you to extract any type from Void, that's infinite information too intuitively.
2023-06-14 21:44:07 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Read error: Connection reset by peer)
2023-06-14 21:44:26 +0200 <monochrom> In fact any value too for whichever type you choose.
2023-06-14 21:44:29 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-06-14 21:44:43 +0200 <EvanR> - log (n / N)
2023-06-14 21:44:49 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-06-14 21:45:03 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-06-14 21:45:31 +0200 <ncf> i mean sure but i'd expect enumFrom to yield total elements
2023-06-14 21:46:11 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2023-06-14 21:46:11 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2023-06-14 21:46:15 +0200allbery_bgeekosaur
2023-06-14 21:47:30 +0200 <probie> ncf: Why? You've already somehow managed to get a `Void`.
2023-06-14 21:47:36 +0200 <monochrom> I expect undefined to beget more undefineds.
2023-06-14 21:48:43 +0200 <EvanR> it's better for errors to be noticed as soon as possible so they need to spread explosively!
2023-06-14 21:48:51 +0200 <probie> Personally, I'd be inclined to go with `enumFrom = repeat` for `Void`
2023-06-14 21:48:55 +0200 <EvanR> detonational semantics
2023-06-14 21:49:05 +0200 <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. >:)
2023-06-14 21:49:36 +0200carbolymer(~carbolyme@dropacid.net) (Server closed connection)
2023-06-14 21:49:45 +0200carbolymer(~carbolyme@dropacid.net)
2023-06-14 21:49:52 +0200 <ncf> probie: oh yeah
2023-06-14 21:50:22 +0200 <ncf> i agree then, i was thinking of enumFrom :: Enum a => [a] for some reason
2023-06-14 21:51:59 +0200 <probie> I don't think it really matters - one hopes that any code that has a `Void` in it, is never actually run
2023-06-14 21:52:27 +0200 <EvanR> why are we implementing Enum for Void anyway
2023-06-14 21:52:51 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b) (Remote host closed the connection)
2023-06-14 21:53:07 +0200 <EvanR> because we 'can' ?
2023-06-14 21:53:12 +0200 <laxmik>  for Void of reasons
2023-06-14 21:53:18 +0200 <probie> Can we have an unlifted Void?
2023-06-14 21:54:23 +0200 <probie> I guess it'd be less useful, since you wouldn't be able to do things like `IO Void`
2023-06-14 21:55:03 +0200 <monochrom> haha Void of reasons
2023-06-14 21:55:31 +0200 <monochrom> Um an unlifted Void would be infinitely useful! Remember? >:)
2023-06-14 21:56:03 +0200 <probie> actually, I take that back - it wouldn't be less useful, it would be useless
2023-06-14 21:56:23 +0200 <EvanR> isn't unlifted Void what we have in Idris and that's the point
2023-06-14 21:56:35 +0200 <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...
2023-06-14 21:57:13 +0200 <monochrom> OK I mean if unlifted Void had a value.
2023-06-14 22:03:30 +0200tessier_(~treed@ip72-197-145-89.sd.sd.cox.net) (Ping timeout: 255 seconds)
2023-06-14 22:03:50 +0200Pickchea(~private@user/pickchea)
2023-06-14 22:05:19 +0200tessier(~treed@ec2-184-72-149-67.compute-1.amazonaws.com)
2023-06-14 22:10:30 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-06-14 22:10:30 +0200 <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..
2023-06-14 22:11:58 +0200 <mauke> Void#
2023-06-14 22:12:10 +0200oac__(~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac__)
2023-06-14 22:12:42 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-06-14 22:13:02 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a031:36aa:a52b:1d5b)
2023-06-14 22:21:04 +0200mauke_(~mauke@user/mauke)
2023-06-14 22:22:05 +0200joeyh_(~joeyh@kitenet.net) (Ping timeout: 240 seconds)
2023-06-14 22:22:17 +0200joeyh(joeyh@2600:3c03::f03c:91ff:fe73:b0d2)
2023-06-14 22:22:22 +0200laxmik(~laxmik@2a01:c23:903b:ff00:542e:56dc:fc4:bc71) (Quit: laxmik)
2023-06-14 22:22:25 +0200mauke(~mauke@user/mauke) (Ping timeout: 240 seconds)
2023-06-14 22:22:25 +0200mauke_mauke
2023-06-14 22:28:17 +0200kuribas(~user@ptr-17d51eok8qyevk6ux0s.18120a2.ip6.access.telenet.be)
2023-06-14 22:29:24 +0200 <kuribas> Is there an applicative law that "fst <$> liftA2 (,) a b" = a ?
2023-06-14 22:29:31 +0200oac__(~oac@72-50-214-210.fttp.usinternet.com)
2023-06-14 22:29:32 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-06-14 22:30:00 +0200 <kuribas> hmm, I suppose not if they perform a side-effect...
2023-06-14 22:30:08 +0200 <kuribas> Is there a structure that has this law?
2023-06-14 22:33:19 +0200trev(~trev@user/trev) (Quit: trev)
2023-06-14 22:33:31 +0200 <kuribas> > fst <$> liftA2 (,) [1, 3] [2, 4, 5]
2023-06-14 22:33:33 +0200 <lambdabot> [1,1,1,3,3,3]
2023-06-14 22:35:31 +0200 <probie> do you mean `fst <$> liftA2 (,) a b = pure a` as a law?
2023-06-14 22:36:03 +0200 <chromoblob> not "pure a", just "a"
2023-06-14 22:36:27 +0200 <chromoblob> a :: f a
2023-06-14 22:36:35 +0200 <ncf> some sort of lazy applicative
2023-06-14 22:36:58 +0200 <probie> You're right (the sun is yet to rise and I'm still half-asleep)
2023-06-14 22:37:14 +0200 <kuribas> An applicative without effects?
2023-06-14 22:37:27 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2023-06-14 22:37:35 +0200 <EvanR> the Identity applicative
2023-06-14 22:37:40 +0200 <kuribas> fst <$> liftA2 (,) a b = unEffect a
2023-06-14 22:37:54 +0200 <ncf> or at least effects that are tied to the values, like in lazy IO
2023-06-14 22:38:11 +0200 <chromoblob> there could be an effect, only "always left" one
2023-06-14 22:38:19 +0200 <probie> > fst <$> liftA2 (,) (ZipList [1,3]) (ZipList [2,4,5])
2023-06-14 22:38:21 +0200 <lambdabot> ZipList {getZipList = [1,3]}
2023-06-14 22:38:40 +0200 <ncf> > snd <$> liftA2 (,) (ZipList [1,3]) (ZipList [2,4,5])
2023-06-14 22:38:41 +0200 <lambdabot> ZipList {getZipList = [2,4]}
2023-06-14 22:38:52 +0200 <ncf> presumably you'd also want the symmetric law snd <$> liftA2 (,) a b = b
2023-06-14 22:38:59 +0200 <kuribas> yes
2023-06-14 22:39:13 +0200 <kuribas> I have something like "time -> val"
2023-06-14 22:40:15 +0200 <kuribas> > fst <$> liftA2 (,) (+ 2) (*3)
2023-06-14 22:40:17 +0200 <lambdabot> error:
2023-06-14 22:40:17 +0200 <lambdabot> • Overlapping instances for Show (Integer -> Integer)
2023-06-14 22:40:17 +0200 <lambdabot> arising from a use of ‘show_M59024113475167700508’
2023-06-14 22:40:27 +0200 <kuribas> > (fst <$> liftA2 (,) (+ 2) (*3)) 5
2023-06-14 22:40:28 +0200 <lambdabot> 7
2023-06-14 22:40:37 +0200 <kuribas> > (snd <$> liftA2 (,) (+ 2) (*3)) 5
2023-06-14 22:40:38 +0200 <lambdabot> 15
2023-06-14 22:42:49 +0200 <kuribas> hmm https://hackage.haskell.org/package/TypeCompose-0.8.0/docs/Data-Zip.html#t:Unzip
2023-06-14 22:43:51 +0200 <chromoblob> Hoogle cannot into text encoding
2023-06-14 22:43:57 +0200 <tomsmeding> iirc a monad is called commutative if 'a >>= \x -> b >>= \y -> f x y' = 'b >>= \y -> a >>= \x -> f x y'
2023-06-14 22:44:24 +0200 <chromoblob> at top there is text input with query, then drop-down menu and Search button
2023-06-14 22:44:25 +0200 <tomsmeding> surely there is some other relevant term for a monad where 'a >>= \x -> E' = 'E' if x is not free in E
2023-06-14 22:44:30 +0200 <chromoblob> i looked into the drop-down menu
2023-06-14 22:44:49 +0200 <chromoblob> some author names are garbled, where characters are not ASCII
2023-06-14 22:45:46 +0200 <tomsmeding> chromoblob: author:fix-whitespace-was-originally-written-by-Nils-Anders-Danielsson-as-part-of-Agda-2-with-contributions-from-Ulf-Norell
2023-06-14 22:46:28 +0200 <chromoblob> hehe
2023-06-14 22:47:15 +0200 <tomsmeding> kuribas: the terms seems to be an "affine monad"
2023-06-14 22:47:27 +0200 <tomsmeding> which is defined by T () ~= ()
2023-06-14 22:47:44 +0200 <tomsmeding> () being the unit type here
2023-06-14 22:47:59 +0200 <tomsmeding> indeed Identity () ~= (), and Reader r () ~= ()
2023-06-14 22:48:42 +0200 <tomsmeding> and [()] ~/= (), because [()] ~= Natural
2023-06-14 22:49:48 +0200 <ncf> very cool
2023-06-14 22:50:12 +0200candlestick(~tls@179.152.251.228)
2023-06-14 22:50:13 +0200 <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
2023-06-14 22:51:21 +0200 <tomsmeding> so perhaps it rather is that `fst <$> liftM2 (,) a b = a` is equivalent to "the monad is affine" :p
2023-06-14 22:52:30 +0200oac__(~oac@72-50-214-210.fttp.usinternet.com) (Quit: oac__)
2023-06-14 22:52:33 +0200 <chromoblob> ohh, there is pure
2023-06-14 22:52:41 +0200 <chromoblob> so no "left effect"
2023-06-14 22:52:50 +0200oac(~oac@72-50-214-210.fttp.usinternet.com)
2023-06-14 22:53:00 +0200candlestick(~tls@179.152.251.228) ()
2023-06-14 22:53:09 +0200 <kuribas> and Set
2023-06-14 22:53:10 +0200 <ncf> yeah, nlab claims that affineness is equivalent to (fmap fst &&& fmap snd) (liftM2 (,) a b) = (a, b)
2023-06-14 22:53:29 +0200 <ncf> which is exactly kuribas's condition
2023-06-14 22:53:52 +0200 <kuribas> right, thanks!
2023-06-14 22:54:05 +0200 <tomsmeding> aside from Identity and Reader, there are also other, highly nontrivial affine monads such as https://lazyppl.bitbucket.io/
2023-06-14 22:54:23 +0200 <EvanR> chromoblob, unamerican encoding reported
2023-06-14 22:54:48 +0200 <tomsmeding> ncf: cool!
2023-06-14 22:55:00 +0200 <tomsmeding> didn't read that far on the surprisingly short nlab page :p
2023-06-14 22:56:07 +0200 <tomsmeding> ncf: what does nlab mean with that π?
2023-06-14 22:56:07 +0200 <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) ?
2023-06-14 22:56:14 +0200 <ncf> tomsmeding: projections, fst and snd
2023-06-14 22:56:25 +0200Buliarous(~gypsydang@46.232.210.139)
2023-06-14 22:56:27 +0200 <tomsmeding> ncf: but, like, then I would have expected π1 and π2
2023-06-14 22:56:34 +0200 <ncf> that would be clearer
2023-06-14 22:56:36 +0200 <ncf> i can edit it
2023-06-14 22:56:40 +0200 <tomsmeding> lol
2023-06-14 22:56:54 +0200 <EvanR> the side is obvious from context:tm:
2023-06-14 22:57:00 +0200 <ncf> done
2023-06-14 22:57:12 +0200 <tomsmeding> yay!
2023-06-14 22:57:45 +0200 <tomsmeding> thanks :)
2023-06-14 22:58:50 +0200 <ncf> chromoblob: snd <$> liftA2 (,) (AlwaysLeft (Just 1) a) (AlwaysLeft (Just 2) a) = AlwaysLeft (Just 1) a, i think?
2023-06-14 22:59:29 +0200 <tomsmeding> right, so you need both the fst part and the snd part of the law
2023-06-14 23:00:17 +0200 <ncf> (additionally your pure isn't an isomorphism, though i don't know if that equivalence maps well to the applicative case)
2023-06-14 23:01:04 +0200 <chromoblob> isn't isomorphism - so what
2023-06-14 23:01:48 +0200 <ncf> in the case of affine monads, an equivalent condition is that pure @() :: () -> m () is an isomorphism
2023-06-14 23:01:59 +0200 <ncf> i.e. "no value, no effect"
2023-06-14 23:02:44 +0200 <tomsmeding> ncf: chromoblob's example was intended to be a counterexample: one that does satisfy kuribas' law but where 'pure' is _not_ an isomorphism
2023-06-14 23:02:50 +0200 <tomsmeding> but it satisfies only the first half of the law
2023-06-14 23:03:08 +0200 <chromoblob> yeah, i missed kuribas' reply "yeah" to the "snd" law
2023-06-14 23:03:37 +0200 <tomsmeding> still it's a good example, showing that you need the full strength of the law
2023-06-14 23:04:33 +0200fendor(~fendor@2a02:8388:1640:be00:7aca:a77a:4a28:631a) (Remote host closed the connection)
2023-06-14 23:05:36 +0200 <tomsmeding> ah re ZipList: doesn't satisfy the law
2023-06-14 23:05:55 +0200 <tomsmeding> > fst <$> liftA2 (,) (ZipList [1,2,6]) (ZipList [3,4])
2023-06-14 23:05:57 +0200 <lambdabot> ZipList {getZipList = [1,2]}
2023-06-14 23:06:12 +0200 <tomsmeding> holds for applicatives so far :)
2023-06-14 23:06:48 +0200 <tomsmeding> oh you already saw that
2023-06-14 23:07:19 +0200taupiqueur2(~taupiqueu@2a02:842a:8180:4601:95a3:46c4:9fe7:ffd7) (Quit: WeeChat 3.8)
2023-06-14 23:08:09 +0200 <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.
2023-06-14 23:08:13 +0200 <chromoblob> i missed that
2023-06-14 23:08:42 +0200 <chromoblob> but what about liftA∞?
2023-06-14 23:08:45 +0200dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 268 seconds)
2023-06-14 23:08:56 +0200cross(~cross@spitfire.i.gajendra.net) (Server closed connection)
2023-06-14 23:09:28 +0200cross(~cross@spitfire.i.gajendra.net)
2023-06-14 23:11:20 +0200 <ncf> sequenceA?
2023-06-14 23:11:43 +0200nitrix(~nitrix@user/nitrix) (Leaving)
2023-06-14 23:12:01 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-06-14 23:13:57 +0200michalz(~michalz@185.246.207.205) (Remote host closed the connection)
2023-06-14 23:13:57 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2023-06-14 23:14:06 +0200 <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?
2023-06-14 23:15:03 +0200Errdonald(~Errdonald@2a01:540:536:a500:7f5d:bc02:46ea:a9e8) (Read error: Connection reset by peer)
2023-06-14 23:15:48 +0200 <sm> yes, there are several packages like that but you have to require/install them
2023-06-14 23:16:28 +0200 <sm> the other way, that's built in, is... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/eda936b26db4c3bee9138ddc7cbef6480122…>)
2023-06-14 23:17:48 +0200 <chromoblob> with unlines, instead of backslashes you need quotes and commas...
2023-06-14 23:18:45 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-06-14 23:19:42 +0200 <ijqq_> ah okay. in that case i will use a list with unlines i think
2023-06-14 23:19:54 +0200gentauro(~gentauro@user/gentauro)
2023-06-14 23:20:00 +0200 <ijqq_> oh hi chromo, how's it going?
2023-06-14 23:21:23 +0200 <chromoblob> please give the code which you questioned yesterday whether it is idiomatic
2023-06-14 23:21:32 +0200 <chromoblob> probably you gave a link, i missed it
2023-06-14 23:22:16 +0200 <chromoblob> ijqq_: note that unlines inserts a newline between elements of the list, use concat instead if you don't want them
2023-06-14 23:22:55 +0200 <ijqq_> okay sure, here is what i have so far
2023-06-14 23:22:56 +0200 <ijqq_> http://sprunge.us/A88qZE
2023-06-14 23:23:20 +0200 <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
2023-06-14 23:25:53 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-06-14 23:26:06 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-06-14 23:26:16 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 260 seconds)
2023-06-14 23:26:33 +0200adium(adium@user/adium) (Server closed connection)
2023-06-14 23:26:37 +0200waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-06-14 23:26:49 +0200adium(adium@user/adium)
2023-06-14 23:35:38 +0200 <ijqq_> oops there was a type in isIdentifier, it's mean to be || c == '_' instead of c == ' '
2023-06-14 23:35:43 +0200 <ijqq_> typo*
2023-06-14 23:40:50 +0200 <chromoblob> yeah, your code appears as fine functional code, also seems correct
2023-06-14 23:42:00 +0200 <EvanR> if it's correct it's good. If it's functional it's perfect
2023-06-14 23:44:08 +0200 <ijqq_> okay i added some example at the bottom too
2023-06-14 23:44:10 +0200 <ijqq_> http://sprunge.us/2JNF1a
2023-06-14 23:44:34 +0200 <ijqq_> well that's good to hear, thank you for taking a look . now on to the next chapter
2023-06-14 23:45:46 +0200hnOsmium0001(~hnosm@user/hnOsmium0001) (Server closed connection)
2023-06-14 23:46:13 +0200hnOsmium0001(~hnosm@user/hnOsmium0001)
2023-06-14 23:47:41 +0200zaidhaan(~zai@2001:f40:960:1c54:3c0f:370:d2d1:4fb9) (Quit: WeeChat 3.8)
2023-06-14 23:50:28 +0200reach(~reach@2607:fea8:4c0:990:4d7:b700:e6a6:d72c)
2023-06-14 23:55:32 +0200mz_(~mz@190.15.90.11)