2021/10/02

2021-10-02 00:00:34 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-10-02 00:02:17 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-02 00:04:30 +0200hololeap(~hololeap@user/hololeap) (Quit: Bye)
2021-10-02 00:12:02 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 00:12:15 +0200lavaman(~lavaman@98.38.249.169)
2021-10-02 00:13:29 +0200shailangsa(~shailangs@host217-39-45-200.range217-39.btcentralplus.com)
2021-10-02 00:17:06 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 00:17:21 +0200lavaman(~lavaman@98.38.249.169)
2021-10-02 00:17:28 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 00:21:25 +0200lavaman(~lavaman@98.38.249.169)
2021-10-02 00:22:28 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2021-10-02 00:25:05 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-02 00:25:22 +0200chisui(~chisui@200116b8683fc700452c17731eb61342.dip.versatel-1u1.de) (Quit: Client closed)
2021-10-02 00:26:08 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-02 00:26:22 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 00:27:27 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-10-02 00:29:19 +0200chisui(~chisui@200116b8683fc700cf2a945a88454e85.dip.versatel-1u1.de)
2021-10-02 00:31:16 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 00:33:42 +0200jaitoon2(~Jaitoon@94.46.244.24)
2021-10-02 00:34:03 +0200 <janus> :t do { let (Just i) = Just 1; pure i }
2021-10-02 00:34:05 +0200 <lambdabot> error: parse error on input ‘}’
2021-10-02 00:34:24 +0200 <janus> what's wrong with this?
2021-10-02 00:34:37 +0200 <geekosaur> the fact that iut's a one-liner
2021-10-02 00:35:00 +0200 <geekosaur> :t do { let { Just i = Just 1 }; pure i }
2021-10-02 00:35:01 +0200 <lambdabot> (Applicative f, Num a) => f a
2021-10-02 00:35:25 +0200 <geekosaur> let also uses braces, and the compiler gets confused when it's inside a braced do
2021-10-02 00:35:41 +0200 <janus> ok, i had no idea :O i only use braces in here
2021-10-02 00:36:57 +0200lavaman(~lavaman@98.38.249.169)
2021-10-02 00:37:14 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 00:37:25 +0200jaitoon1(~Jaitoon@2a02:c7f:a5f:1d00:546d:550:f4e1:8ed7) (Ping timeout: 252 seconds)
2021-10-02 00:37:25 +0200 <geekosaur> more precisely it hands the semicolon and close brace to the let instead oif the do, then parsing breaks because `pure i` isn't an assignment
2021-10-02 00:38:02 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 00:38:05 +0200 <geekosaur> brace parsing is a bit hacky; you can check the Report for details
2021-10-02 00:39:31 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2021-10-02 00:41:03 +0200 <janus> what is the motivation for let's and monadic binds working differently regarding incomplete patterns?
2021-10-02 00:41:39 +0200 <janus> it seems to me that it would be sufficient to have the <- or the = only affect what's on the left side, it doesn't need to care about how to match on it, that logic could be shared for both
2021-10-02 00:41:53 +0200 <janus> *affect what's on the RIGHT side, i meant
2021-10-02 00:42:46 +0200 <geekosaur> you always want to error on a let pattern match failure, because there's no other option
2021-10-02 00:42:54 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-10-02 00:43:11 +0200 <geekosaur> but in do, there is another option: fail. which means Nothing for Maybe, [] for list, Left msg for Either, ...
2021-10-02 00:43:35 +0200 <geekosaur> s/Either/& String/
2021-10-02 00:43:54 +0200 <awpr> something I had missed about this question initially: inside do-notation, you could define that `let` should use the monad's `fail` for partial patterns
2021-10-02 00:44:28 +0200 <awpr> it'd be weird for `let`-as-a-statement to be different from `let`-as-an-expression
2021-10-02 00:44:51 +0200boxscape_(~boxscape_@mue-88-130-59-180.dsl.tropolys.de)
2021-10-02 00:44:52 +0200 <awpr> but it's also a bit weird that `pat <- pure expr` is not the same as `let pat = expr`
2021-10-02 00:46:33 +0200 <janus> aaah right, ok , that explains it. the preferrence is for let to behave the same inside and outside do-blocks, instead of having all pattern failures behave the same inside the do block.
2021-10-02 00:51:38 +0200 <jaitoon2> thanks merijn and [itchyjunk] for the book recommendations :)
2021-10-02 00:52:24 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds)
2021-10-02 00:53:03 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2021-10-02 00:54:47 +0200 <geekosaur> well, it also rather simplifiues how do blocks are expanded because "statement let" can just expand to normal let-in
2021-10-02 00:55:25 +0200lavaman(~lavaman@98.38.249.169)
2021-10-02 00:55:38 +0200 <geekosaur> (of course that's not a great argument these days since MonadFail and ApplicativeDo have made much bigger messes of do than desugaring let differently would have)
2021-10-02 00:56:21 +0200 <geekosaur> but you do have the question of whether you then go on to treat statement-let differently from let-in inside a do
2021-10-02 00:57:15 +0200 <geekosaur> so they just took the simplest solution
2021-10-02 00:57:37 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 00:58:37 +0200emf(~emf@163.114.132.1) (Quit: emf)
2021-10-02 00:59:46 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 01:03:04 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-02 01:03:04 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-02 01:03:04 +0200wroathe(~wroathe@user/wroathe)
2021-10-02 01:03:07 +0200lavaman(~lavaman@98.38.249.169)
2021-10-02 01:07:07 +0200 <awpr> > `do let x = 5 in x`
2021-10-02 01:07:08 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘`’
2021-10-02 01:07:14 +0200 <awpr> > do let x = 5 in x
2021-10-02 01:07:15 +0200 <lambdabot> 5
2021-10-02 01:07:17 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 01:07:35 +0200 <awpr> some do-blocks have no monad to use for let-in anyway :)
2021-10-02 01:07:48 +0200karim(uid519758@id-519758.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-02 01:11:08 +0200mikoto-chan(~mikoto-ch@83.137.2.243)
2021-10-02 01:12:05 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 01:14:30 +0200lavaman(~lavaman@98.38.249.169)
2021-10-02 01:15:35 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 01:19:40 +0200tlaxkit(~hexchat@170.253.34.130)
2021-10-02 01:21:16 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-10-02 01:24:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 01:28:24 +0200 <orzo> I want to implement MVector for a buffer owned by a c library (opengl) that has a lot of state associated. I don't want to support the ST monad, but the MVector type class seems to want a constructor for an arbitrary PrimMonad instance. A runtime error call for non-IO usage is acceptable to me but I cant figure out how to do that. I need a Typeable constraint that i'm not provided with to
2021-10-02 01:28:30 +0200 <orzo> accomplish it.
2021-10-02 01:29:00 +0200cwmcrb(~cwmcrb@c-98-208-68-237.hsd1.ca.comcast.net)
2021-10-02 01:29:36 +0200 <orzo> Is it possible to assert (possibly even at runtime) that the given PrimMonad is IO?
2021-10-02 01:29:51 +0200 <geekosaur> (PrimMonad m, M ~ IO) => ... ?
2021-10-02 01:30:05 +0200 <geekosaur> er. m ~ IO
2021-10-02 01:30:10 +0200DNH(~DNH@2a02:8108:1100:16d8:4c54:3aa3:ad7c:33c2) (Quit: Textual IRC Client: www.textualapp.com)
2021-10-02 01:30:18 +0200 <orzo> I'm trying to ipmement the api in Data.Vector.Generic.Mutable.Base
2021-10-02 01:30:29 +0200 <orzo> basicUnsafeNew :: PrimMonad m => Int -> m (v (PrimState m) a)
2021-10-02 01:31:04 +0200 <orzo> i made a GADT constructor for my v type that forces the state argument ot be RealWOrld
2021-10-02 01:31:16 +0200 <orzo> but that's not good enough here because i can't pattern match on the return value
2021-10-02 01:32:24 +0200cwmcrb(~cwmcrb@c-98-208-68-237.hsd1.ca.comcast.net) (Quit: Leaving...)
2021-10-02 01:32:29 +0200max22-(~maxime@2a01cb088335980098b0bbe63a5a4455.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-10-02 01:33:47 +0200 <orzo> i can use something like unsafeIOToPrim
2021-10-02 01:34:07 +0200 <orzo> but i'm not sure what would happen if somebody tried to then make an ST version of my MVector
2021-10-02 01:34:32 +0200 <awpr> presumably it would perform whatever IO you did in the creation of the vector
2021-10-02 01:34:49 +0200 <orzo> well, that doesn't sound good
2021-10-02 01:34:56 +0200 <orzo> i'd rather error out
2021-10-02 01:35:14 +0200 <awpr> if it's appropriate to pretend the allocation is no less pure than allocating a normal vector, then it might be fine
2021-10-02 01:35:37 +0200 <awpr> seems like it depends on what the backing storage is and such
2021-10-02 01:36:20 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-10-02 01:36:21 +0200 <orzo> it's an opengl vbo
2021-10-02 01:36:53 +0200 <dolio> How is that represented in Haskell?
2021-10-02 01:37:04 +0200 <orzo> a couple of Ints
2021-10-02 01:37:28 +0200 <orzo> primarily a single int that identifies the buffer
2021-10-02 01:37:45 +0200 <dolio> Oh, so it's not like a pointer or something? It uses some API for access that only works in IO?
2021-10-02 01:37:51 +0200 <orzo> yes
2021-10-02 01:38:26 +0200 <orzo> i'd like it to check the IO usage at compile time or even at run time
2021-10-02 01:38:39 +0200 <orzo> i just want to satisfy MVector so i can use some other code
2021-10-02 01:38:56 +0200 <awpr> I don't think that inherently has to be a problem; writing to memory like you would in ST is also I/O, and the core libraries people have just decided that kind of IO is okay to put in independent state threads
2021-10-02 01:39:11 +0200 <awpr> but being an OpenGL object raises concerns
2021-10-02 01:39:16 +0200 <orzo> ya
2021-10-02 01:39:19 +0200 <orzo> it raises concerns
2021-10-02 01:39:26 +0200 <orzo> i dont want it to be used that way
2021-10-02 01:39:34 +0200 <awpr> sounds like it can't be an MVector, then
2021-10-02 01:39:48 +0200 <orzo> well it can, just in a pretty unsafe way
2021-10-02 01:40:00 +0200 <dolio> I don't think there's a way to tell you're in ST rather than IO.
2021-10-02 01:40:19 +0200 <awpr> right, "can't" as in it doesn't fit into the intended meaning of MVector
2021-10-02 01:41:16 +0200 <orzo> i dont think it would be unsafe for IO usage of MVector
2021-10-02 01:41:34 +0200 <orzo> i think that would be fine
2021-10-02 01:41:39 +0200 <awpr> but MVector is defined to be a class of things that can be used in all PrimMonads
2021-10-02 01:42:04 +0200 <awpr> although I'm still not totally sure it wouldn't be appropriate to do in ST. how much invisible stateful nonsense is there in creating/writing these?
2021-10-02 01:42:06 +0200 <orzo> yeah, well i mean, i don't think a programmer who uses it with IO would run into an issue
2021-10-02 01:42:40 +0200 <awpr> that seems true. you could also write a Monad instance whose >>= is `error`, and programmers who only use `return` wouldn't run into any issues
2021-10-02 01:43:15 +0200 <orzo> right, but in this case, i can't even write error
2021-10-02 01:43:27 +0200 <orzo> i just have to pretend i'm in IO
2021-10-02 01:43:28 +0200 <orzo> heh
2021-10-02 01:43:43 +0200 <awpr> same sort of situation: the class wants more generality than the particular type can provide, and that's unfortunate because a lot of the stuff that abstracts over the class would be useful
2021-10-02 01:44:27 +0200 <awpr> this is why I'm prodding at whether you can get away with allowing it in ST: if you can, then the problem goes away on its own
2021-10-02 01:44:35 +0200 <orzo> i'm okay with errorIfST if it was doable
2021-10-02 01:45:16 +0200 <dolio> It isn't, though. PrimMonad doesn't have that.
2021-10-02 01:46:07 +0200 <orzo> PrimMonad should have a Typable m parent constraint
2021-10-02 01:46:14 +0200 <orzo> then you could do hacky foo like this
2021-10-02 01:47:28 +0200 <orzo> or MVector class should mention m as one of the arguments
2021-10-02 01:47:40 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 01:49:31 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 01:50:09 +0200hololeap(~hololeap@user/hololeap)
2021-10-02 01:50:55 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-10-02 01:51:22 +0200Adran(~adran@botters/adran) (Quit: Este é o fim.)
2021-10-02 01:53:01 +0200 <awpr> what's the code you want to use it with that expects MVector? if it's something you wrote, you could change it to use a new class with e.g. just a write-at-index-i method
2021-10-02 01:53:54 +0200 <orzo> data-vector-growable
2021-10-02 01:54:35 +0200 <orzo> its not a whole lot, i had started re-implementing it, but then I foold myself into thinking it was possible to implmenet MVector with a GADT
2021-10-02 01:54:35 +0200Adran(adran@botters/adran)
2021-10-02 01:55:27 +0200 <awpr> hmm, yeah, that seems like it wants to be written against an MVector-like thing that's capable of constraining the `m`
2021-10-02 01:55:35 +0200 <orzo> now i'm torn between re-implmenting and using some unsafe hack
2021-10-02 01:57:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 02:01:04 +0200emf(~emf@2620:10d:c090:400::5:113f)
2021-10-02 02:01:28 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 02:03:45 +0200 <orzo> probably unsafeIOToPrim is acceptable since the GADT includes the state argument and calling "new" will still be a type error if you use it with ST
2021-10-02 02:04:06 +0200 <orzo> hm
2021-10-02 02:04:12 +0200 <orzo> but it wont be a type error
2021-10-02 02:04:22 +0200 <orzo> there i go tricking myself again
2021-10-02 02:04:24 +0200 <monochrom> janus: BTW my perspective is that "do { pattern <- xxx; ... }" is as justified as "[ ... | pattern <- xxx, ...]"
2021-10-02 02:04:31 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 02:05:12 +0200 <monochrom> > [ x | Just x <- [Nothing, Just 4, Nothing, Just 5] ]
2021-10-02 02:05:14 +0200 <lambdabot> [4,5]
2021-10-02 02:06:07 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-10-02 02:06:17 +0200hexfive(~eric@50.35.83.177)
2021-10-02 02:06:30 +0200hexfive(~eric@50.35.83.177) (Client Quit)
2021-10-02 02:10:13 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 02:10:48 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 02:13:42 +0200pfurla(~pfurla@216.151.180.130)
2021-10-02 02:16:23 +0200pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds)
2021-10-02 02:17:26 +0200notzmv(~zmv@user/notzmv)
2021-10-02 02:17:38 +0200Stotteren(~Stotteren@pool-108-20-79-41.bstnma.fios.verizon.net)
2021-10-02 02:18:30 +0200hendursaga(~weechat@user/hendursaga) (Quit: hendursaga)
2021-10-02 02:18:58 +0200hendursaga(~weechat@user/hendursaga)
2021-10-02 02:22:27 +0200 <monochrom> https://github.com/treblacy/hasdoc newly improved :)
2021-10-02 02:23:54 +0200nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-10-02 02:26:58 +0200lavaman(~lavaman@98.38.249.169)
2021-10-02 02:30:37 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-10-02 02:34:47 +0200ss4(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2021-10-02 02:36:07 +0200ph88(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-10-02 02:36:30 +0200ph88(~ph88@2a02:8109:9e00:7e5c:1cbc:efbb:c578:a980)
2021-10-02 02:39:40 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-02 02:40:31 +0200Topsi(~Tobias@dyndsl-095-033-023-177.ewe-ip-backbone.de)
2021-10-02 02:42:16 +0200 <orzo> awpr: I got my gl vector to compile using only ioToPrim and unsafeInterleaveIO and GADT matching
2021-10-02 02:43:28 +0200 <awpr> huh. I don't immediately see how that's possible
2021-10-02 02:44:04 +0200 <orzo> it's probably an infinite loop
2021-10-02 02:44:12 +0200 <orzo> i used fix
2021-10-02 02:44:16 +0200 <orzo> heh
2021-10-02 02:44:48 +0200 <awpr> oh, to match the output before you construct it? I expect that's a loop, yeah
2021-10-02 02:44:50 +0200 <orzo> i was trying to use unsafeInterleaveIO to avoid looping but that's probably not right
2021-10-02 02:45:30 +0200 <orzo> a give away is there was no place for me to call error
2021-10-02 02:45:30 +0200 <orzo> heh
2021-10-02 02:47:46 +0200 <awpr> out of curiosity, is this doing something like glGenBuffers+glBindBuffer+glMapBuffer to "create" the buffer?
2021-10-02 02:48:17 +0200 <orzo> yeah but not glMap
2021-10-02 02:48:28 +0200 <orzo> glBufferData
2021-10-02 02:48:51 +0200 <orzo> i did use glMapBuffer for some other calls
2021-10-02 02:49:21 +0200Psybur(~Psybur@mobile-166-170-32-197.mycingular.net) (Remote host closed the connection)
2021-10-02 02:49:33 +0200 <orzo> i'm probably just wating time now trying to make a sanish MVector instance
2021-10-02 02:49:51 +0200 <orzo> but its ammusing anwyay
2021-10-02 02:50:07 +0200 <awpr> hmm... I'm not very familiar with the GL APIs, does that mean each element write has to update the whole buffer?
2021-10-02 02:50:15 +0200 <orzo> no
2021-10-02 02:50:31 +0200 <orzo> there's a lot of different calls for manipulating buffers
2021-10-02 02:52:43 +0200hgolden_(~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection)
2021-10-02 02:53:27 +0200 <awpr> as far as updating the contents, I'm only finding APIs for "write the whole buffer" and "map the buffer into host address space", am I missing some?
2021-10-02 02:53:54 +0200 <orzo> yes
2021-10-02 02:54:22 +0200 <orzo> glBufferSubData
2021-10-02 02:54:46 +0200acidjnk(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
2021-10-02 02:54:57 +0200 <awpr> ah, okay. and that interacts with the hefty internal global state of OpenGL
2021-10-02 02:55:36 +0200 <awpr> just wondering whether "map immediately on creation and keep the pointer" could avoid the internal state enough to be ST-compatible
2021-10-02 02:56:54 +0200 <orzo> i don't think much would go wrong with ST if you use it within IO and have a GL context active
2021-10-02 02:57:01 +0200acidjnk_new(~acidjnk@p200300d0c703cb709cd806e9bafd3ecc.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 02:57:01 +0200acidjnk_new3(~acidjnk@p200300d0c703cb709cd806e9bafd3ecc.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 02:57:37 +0200 <orzo> none of this will work without a GL context initialized
2021-10-02 02:57:58 +0200acidjnk_new(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
2021-10-02 02:58:00 +0200 <orzo> that's some kind of thread-local state
2021-10-02 02:58:11 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 02:58:58 +0200 <orzo> it seems odd to put requirements like that on pure non-monadic code
2021-10-02 02:59:11 +0200 <awpr> yeah, agree that's a problem
2021-10-02 03:00:56 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-10-02 03:04:14 +0200Lycurgus(~juan@98.4.112.204) (Ping timeout: 260 seconds)
2021-10-02 03:05:39 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 03:11:25 +0200acidjnk_new(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 03:11:25 +0200acidjnk(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 03:12:17 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-10-02 03:13:03 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-10-02 03:13:24 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-10-02 03:16:49 +0200xff0x(~xff0x@2001:1a81:53fd:8200:7263:a828:f9a7:9516) (Ping timeout: 252 seconds)
2021-10-02 03:18:22 +0200_xor(~xor@74.215.232.67) (Quit: WeeChat 3.2.1)
2021-10-02 03:18:45 +0200xff0x(~xff0x@2001:1a81:5237:ef00:6acb:a523:9d13:873c)
2021-10-02 03:18:52 +0200_xor(~xor@74.215.232.67)
2021-10-02 03:20:51 +0200zaquest(~notzaques@5.128.210.178)
2021-10-02 03:20:57 +0200acidjnk(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
2021-10-02 03:20:57 +0200acidjnk_new(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
2021-10-02 03:26:49 +0200acidjnk(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 03:26:49 +0200acidjnk_new(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 03:29:09 +0200 <orzo> awpr: what if i use unsafeInterleaveIO to make the basicUnsafeNew constructor lazy and all the read and write routines have an implicit check that PrimState m ~ RealWorld because they use ioToPrim
2021-10-02 03:29:25 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-02 03:30:04 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat)
2021-10-02 03:30:53 +0200 <orzo> the uncertainty comes from how it decides (PrimState m ~ RealWorld) is okay based on the GADT match and the constructor was created in the lazy constructor call that used unsafeCoerce
2021-10-02 03:30:56 +0200neurocyte01320(~neurocyte@94.46.83.234)
2021-10-02 03:30:56 +0200neurocyte01320(~neurocyte@94.46.83.234) (Changing host)
2021-10-02 03:30:56 +0200neurocyte01320(~neurocyte@user/neurocyte)
2021-10-02 03:30:59 +0200ec(~ec@gateway/tor-sasl/ec)
2021-10-02 03:32:25 +0200tlaxkit(~hexchat@170.253.34.130) (Quit: Leaving)
2021-10-02 03:33:10 +0200 <awpr> that doesn't actually achieve any checking if I'm understanding it correctly
2021-10-02 03:33:19 +0200neurocyte0132(~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
2021-10-02 03:33:19 +0200neurocyte01320neurocyte0132
2021-10-02 03:33:51 +0200 <awpr> if it's actually `unsafeCoerce`, then all it's doing is providing a lie as proof that whatever `PrimState` is `RealWorld`
2021-10-02 03:34:11 +0200 <awpr> and then consuming that lie to retroactively justify the lie
2021-10-02 03:35:03 +0200 <monochrom> @quote monochrom unsafeCoerce
2021-10-02 03:35:03 +0200 <lambdabot> monochrom says: isTrue = (unsafeCoerce :: Either a b -> Bool) . (unsafeCoerce :: Maybe c -> Either a b) . (unsafeCoerce :: Bool -> Maybe c)
2021-10-02 03:35:11 +0200 <monochrom> Very safe and honest. >:)
2021-10-02 03:36:21 +0200 <orzo> well
2021-10-02 03:36:42 +0200 <geekosaur> unsafeCoerce can be safe if and only if the type level says something valid. if you're using it because you can't say what you want at the type level, now you have two problems
2021-10-02 03:36:59 +0200 <orzo> is there anything worthwhile to get from post-poning actual IO to a point where a constructor could be matched
2021-10-02 03:37:47 +0200mikoto-chan(~mikoto-ch@83.137.2.243) (Ping timeout: 252 seconds)
2021-10-02 03:37:56 +0200 <orzo> the read/write functions are fine the way they are relying on a GADT pattern match to decide the state is RealWorld
2021-10-02 03:38:19 +0200 <orzo> it's not their fault
2021-10-02 03:38:22 +0200 <orzo> heh
2021-10-02 03:38:57 +0200 <orzo> if i made an alternative constructor and disallowed the basicUnsafeNew call, they'd be fine protection
2021-10-02 03:39:14 +0200 <awpr> yeah, in isolation they're fine. but I don't think there's any way to get around the issue of `basicUnsafeNew`; nothing tells it what `m` is, and the only thing that tells the later methods what `m` is is `basicUnsafeNew`, which itself didn't know to begin with
2021-10-02 03:39:14 +0200 <orzo> and that call does have unsafe in the title ;)
2021-10-02 03:39:21 +0200 <geekosaur> I was actually consideriing suggesting that
2021-10-02 03:39:27 +0200 <geekosaur> smart constructor
2021-10-02 03:39:30 +0200mikoto-chan(~mikoto-ch@83.137.2.253)
2021-10-02 03:39:46 +0200 <orzo> well it wont let me use data-vector-growable out of the box to disallow basicUnsafeNew
2021-10-02 03:39:47 +0200 <awpr> yeah, an alternative IO-only constructor could be safe. but would it _work_ in the context you want to use it in?
2021-10-02 03:39:50 +0200 <awpr> yeah, that
2021-10-02 03:40:08 +0200 <orzo> the data-vector-growable package is not big tho
2021-10-02 03:40:45 +0200 <awpr> does this whole situation also have issues with GHC's threaded runtime? or is this somehow dealing with that by using pinned threads etc.
2021-10-02 03:41:06 +0200 <orzo> no issues
2021-10-02 03:41:12 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-02 03:41:17 +0200 <orzo> i'm actually using gtk to get my gl context
2021-10-02 03:41:58 +0200 <awpr> "using gtk" meaning "running inside a callback from gtk"? then it might be pinned to the GTK thread
2021-10-02 03:42:33 +0200harveypwca(~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26)
2021-10-02 03:43:09 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-02 03:43:23 +0200 <orzo> gtk documents when you can use the gl context
2021-10-02 03:43:36 +0200 <orzo> they have a call to bring it into scope when it is not
2021-10-02 03:44:06 +0200 <orzo> but yeah, i don't feel confident i can use it from multiple threads
2021-10-02 03:44:22 +0200 <awpr> ok, sounds like they've explicitly dealt with the issues and documented how to avoid breaking it
2021-10-02 03:46:51 +0200 <orzo> i have a thought to add safety
2021-10-02 03:48:20 +0200 <orzo> class MVector v a -- it has two arguments v and a.
2021-10-02 03:49:06 +0200 <orzo> I could force the a to be something that includes some proof maybe
2021-10-02 03:49:44 +0200 <orzo> when you actually write to the vector, kyou'll be forced to include the proof
2021-10-02 03:49:58 +0200 <orzo> and everything else can be lazy to that point
2021-10-02 03:53:45 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-02 03:53:59 +0200Topsi(~Tobias@dyndsl-095-033-023-177.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-10-02 03:54:25 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-02 03:54:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 03:54:38 +0200vysn(~vysn@user/vysn) (Ping timeout: 260 seconds)
2021-10-02 03:55:11 +0200yinghua(~yinghua@181.228.40.183) (Quit: Leaving)
2021-10-02 03:57:57 +0200acidjnk(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
2021-10-02 03:57:57 +0200acidjnk_new(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de)
2021-10-02 03:59:40 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-10-02 04:00:12 +0200TDANG(~TDANG@inet-177-7.ets.org)
2021-10-02 04:00:53 +0200mikoto-chan(~mikoto-ch@83.137.2.253) (Read error: Connection reset by peer)
2021-10-02 04:00:58 +0200 <TDANG> Hi. Please take a look at this code snipet
2021-10-02 04:01:18 +0200 <TDANG> data GiveParams = GiveParams
2021-10-02 04:01:19 +0200 <TDANG> { gpBeneficiary :: !PubKeyHash
2021-10-02 04:01:21 +0200 <TDANG> , gpDeadline :: !POSIXTime
2021-10-02 04:01:22 +0200 <TDANG> , gpAmount :: !Integer
2021-10-02 04:01:24 +0200 <TDANG> } deriving (Generic, ToJSON, FromJSON, ToSchema)
2021-10-02 04:01:25 +0200 <TDANG> give :: AsContractError e => GiveParams -> Contract w s e ()
2021-10-02 04:01:27 +0200 <TDANG> give gp = do
2021-10-02 04:01:28 +0200 <TDANG> let dat = VestingDatum
2021-10-02 04:01:31 +0200 <TDANG> { beneficiary = gpBeneficiary gp
2021-10-02 04:01:31 +0200 <TDANG> , deadline = gpDeadline gp
2021-10-02 04:01:33 +0200 <TDANG> }
2021-10-02 04:01:36 +0200 <TDANG> My concern: beneficiary = gpBeneficiary gp
2021-10-02 04:01:40 +0200 <monochrom> Ugh you already know you should use a pastebin.
2021-10-02 04:01:53 +0200 <TDANG> How should I understand this statement?
2021-10-02 04:02:54 +0200 <boxscape_> instead of posting multiple lines of code directly, it's appropriate to paste them into something like https://paste.tomsmeding.com/ and then paste a link to the result here
2021-10-02 04:03:01 +0200 <TDANG> Can you guide me how to use pastebin?
2021-10-02 04:03:25 +0200 <boxscape_> 1. go to https://paste.tomsmeding.com/ 2. paste code 3. copy link and paste link here
2021-10-02 04:04:08 +0200 <TDANG> https://paste.tomsmeding.com/oyfqUuyj
2021-10-02 04:04:52 +0200 <boxscape_> 👍
2021-10-02 04:05:18 +0200 <TDANG> Can you help me with this statement: beneficiary = gpBeneficiary gp
2021-10-02 04:05:35 +0200 <boxscape_> what is your question about that statement?
2021-10-02 04:06:11 +0200 <TDANG> I mean, what does this statement mean: beneficiary = gpBeneficiary gp
2021-10-02 04:06:47 +0200mikoto-chan(~mikoto-ch@83.137.2.245)
2021-10-02 04:07:22 +0200 <TDANG> gp is of type GiveParams, correct?
2021-10-02 04:07:42 +0200 <boxscape_> VestingDatum is a record with the fields beneficiary and deadline. `VestingDatum { beneficiary = gpBeneficiary gp, deadline = gpDeadline gp}` creates a new VestingDatum value with the beneficiary field having the value gpBeneficiary gp
2021-10-02 04:07:51 +0200 <boxscape_> correc
2021-10-02 04:07:52 +0200 <boxscape_> t
2021-10-02 04:08:07 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-02 04:08:07 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-02 04:08:07 +0200wroathe(~wroathe@user/wroathe)
2021-10-02 04:08:19 +0200 <boxscape_> GiveParams is also a record, and the expression `gpBeneficiary gp` extracts the gpBeneficiary field from the gp value
2021-10-02 04:08:55 +0200 <boxscape_> so the line in question means that the newly created VestingDatum will have the same beneficiary as the gpBeneficiary of the GiveParams value
2021-10-02 04:09:48 +0200 <TDANG> expression `gpBeneficiary gp` extracts the gpBeneficiary field from the gp value : do you have any document for this?
2021-10-02 04:11:44 +0200 <boxscape_> TDANG: I don't have a standard document at hand, but the learn you a haskell section on "Record syntax" on this page seems alright http://learnyouahaskell.com/making-our-own-types-and-typeclasses
2021-10-02 04:11:57 +0200 <boxscape_> (scroll down to "Record syntax")
2021-10-02 04:11:59 +0200alx741(~alx741@181.196.69.214) (Quit: alx741)
2021-10-02 04:12:10 +0200 <TDANG> Oh, I found one: https://sodocumentation.net/haskell/topic/1950/record-syntax
2021-10-02 04:12:23 +0200 <boxscape_> yeah that seems good, too
2021-10-02 04:12:55 +0200 <TDANG> https://paste.tomsmeding.com/pCRT7pFH
2021-10-02 04:13:58 +0200 <TDANG> Ya, cool. Thanks a lot ;-)
2021-10-02 04:14:04 +0200 <boxscape_> welcome
2021-10-02 04:14:16 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-10-02 04:14:31 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2.1)
2021-10-02 04:22:24 +0200pavonia(~user@user/siracusa)
2021-10-02 04:28:56 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 04:32:43 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 04:34:09 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 04:38:22 +0200 <TDANG> 1 bit concern: gpBeneficiary gp
2021-10-02 04:38:52 +0200 <TDANG> this statement may be translated as : function gpBeneficiary with parameter gp
2021-10-02 04:39:02 +0200 <boxscape_> yes
2021-10-02 04:39:20 +0200 <boxscape_> (technically it's an expression, not a statement)
2021-10-02 04:39:26 +0200 <TDANG> how can we differentciate with extraction a property from a record var
2021-10-02 04:39:35 +0200 <TDANG> ya, expression
2021-10-02 04:40:12 +0200 <boxscape_> when you define `data GiveParam = GiveParam { gpBeneficiary :: ... }`, the extractor `gpBeneficiary` *is* a function
2021-10-02 04:40:21 +0200 <boxscape_> so you can't really differentiate it from a function
2021-10-02 04:40:38 +0200jaitoon2(~Jaitoon@94.46.244.24) (Quit: Leaving)
2021-10-02 04:40:44 +0200 <boxscape_> you can figure out where it was defined
2021-10-02 04:40:56 +0200 <boxscape_> and then there you can see whether it comes from a record or was defined as a regular function
2021-10-02 04:41:30 +0200 <TDANG> oh, nice. This is a correct way to trace the origin
2021-10-02 04:42:02 +0200 <boxscape_> right
2021-10-02 04:42:18 +0200terrorjack(~terrorjac@static.3.200.12.49.clients.your-server.de) (Read error: Connection reset by peer)
2021-10-02 04:43:39 +0200machinedgod(~machinedg@24.105.81.50)
2021-10-02 04:43:43 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-10-02 04:46:01 +0200chisui(~chisui@200116b8683fc700cf2a945a88454e85.dip.versatel-1u1.de) (Ping timeout: 256 seconds)
2021-10-02 04:57:58 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
2021-10-02 04:59:14 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-02 04:59:58 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-02 05:00:50 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds)
2021-10-02 05:01:04 +0200adium(adium@user/adium) (Killed (NickServ (GHOST command used by adium55!~adium55@2804:14d:149a:8ad4:31b5:99c4:c7a3:6ed4)))
2021-10-02 05:01:23 +0200td_(~td@94.134.91.208) (Ping timeout: 252 seconds)
2021-10-02 05:02:44 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-10-02 05:02:50 +0200adium_(adium@user/adium)
2021-10-02 05:03:04 +0200td_(~td@94.134.91.111)
2021-10-02 05:06:07 +0200adium_adium
2021-10-02 05:12:38 +0200rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2021-10-02 05:18:42 +0200mbuf(~Shakthi@27.58.139.33)
2021-10-02 05:22:40 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-10-02 05:28:16 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-10-02 05:30:25 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2021-10-02 05:30:37 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-02 05:31:01 +0200mei(~mei@user/mei) (Ping timeout: 252 seconds)
2021-10-02 05:35:55 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-10-02 05:38:32 +0200boxscape_(~boxscape_@mue-88-130-59-180.dsl.tropolys.de) (Quit: Connection closed)
2021-10-02 05:43:56 +0200CnnibisIndicaCannabisIndica
2021-10-02 05:47:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-02 05:47:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-02 05:47:50 +0200wroathe(~wroathe@user/wroathe)
2021-10-02 05:53:01 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-10-02 06:08:56 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-02 06:11:14 +0200rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds)
2021-10-02 06:11:50 +0200phma_(~phma@host-67-44-209-109.hnremote.net)
2021-10-02 06:14:38 +0200phma(~phma@host-67-44-209-109.hnremote.net) (Ping timeout: 260 seconds)
2021-10-02 06:16:37 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-02 06:16:52 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-02 06:19:55 +0200geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 252 seconds)
2021-10-02 06:24:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 06:29:22 +0200hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
2021-10-02 06:33:14 +0200fizzsegfaultbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 252 seconds)
2021-10-02 06:46:20 +0200thelounge9230681(~thelounge@cpe-75-85-161-60.san.res.rr.com) (Ping timeout: 250 seconds)
2021-10-02 06:52:58 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 06:53:22 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 06:59:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 07:02:32 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-02 07:08:01 +0200pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-10-02 07:10:38 +0200pfurla(~pfurla@216.151.180.130) (Ping timeout: 252 seconds)
2021-10-02 07:12:16 +0200emf(~emf@2620:10d:c090:400::5:113f) (Quit: emf)
2021-10-02 07:13:30 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-10-02 07:14:27 +0200zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-10-02 07:16:34 +0200turlando(~turlando@user/turlando) (Ping timeout: 252 seconds)
2021-10-02 07:16:55 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-10-02 07:16:55 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-10-02 07:16:55 +0200turlando(~turlando@user/turlando)
2021-10-02 07:18:32 +0200 <c_wraith> anyone know what the status of the GHC 9.2 release candidate is?
2021-10-02 07:19:14 +0200martin02(~silas@141.84.69.76) (Ping timeout: 246 seconds)
2021-10-02 07:19:40 +0200 <c_wraith> the current RC fixes a couple bugs that make using type application a lot nicer.
2021-10-02 07:19:51 +0200martin02(~silas@141.84.69.76)
2021-10-02 07:20:00 +0200 <c_wraith> It'd be cool to see it officially released
2021-10-02 07:27:50 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-10-02 07:39:25 +0200mikoto-chan(~mikoto-ch@83.137.2.245) (Read error: Connection reset by peer)
2021-10-02 07:45:03 +0200mikoto-chan(~mikoto-ch@83.137.2.245)
2021-10-02 07:46:46 +0200vysn(~vysn@user/vysn)
2021-10-02 07:56:11 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-10-02 08:07:46 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 08:12:22 +0200chomwitt(~chomwitt@ppp-2-85-111-14.home.otenet.gr)
2021-10-02 08:14:38 +0200machinedgod(~machinedg@24.105.81.50)
2021-10-02 08:20:45 +0200benin0369323016(~benin@183.82.205.238)
2021-10-02 08:21:33 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-10-02 08:23:54 +0200ec(~ec@gateway/tor-sasl/ec)
2021-10-02 08:27:36 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 08:29:56 +0200acidjnk_new3(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
2021-10-02 08:33:10 +0200acidjnk_new(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 08:33:10 +0200acidjnk(~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 08:33:28 +0200acidjnk(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
2021-10-02 08:38:30 +0200juhp(~juhp@128.106.188.220) (Quit: juhp)
2021-10-02 08:38:31 +0200iridium__(~iridium@122.175.138.158)
2021-10-02 08:38:44 +0200juhp(~juhp@128.106.188.220)
2021-10-02 08:42:36 +0200emf(~emf@2620:10d:c090:400::5:113f)
2021-10-02 08:43:41 +0200xiongxin(~quassel@113.116.33.66)
2021-10-02 08:50:21 +0200mikoto-chan(~mikoto-ch@83.137.2.245) (Read error: Connection reset by peer)
2021-10-02 08:51:10 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 08:52:58 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-10-02 08:53:07 +0200emf(~emf@2620:10d:c090:400::5:113f) (Quit: emf)
2021-10-02 08:53:20 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-10-02 08:53:50 +0200emf(~emf@2620:10d:c090:400::5:113f)
2021-10-02 08:55:12 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-02 08:55:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 08:56:22 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-02 08:57:53 +0200ubert(~Thunderbi@178.115.52.70.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-10-02 09:00:34 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 09:02:46 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 252 seconds)
2021-10-02 09:04:52 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-10-02 09:07:07 +0200rtjure(~rtjure@bras-79-132-17-74.comnet.bg)
2021-10-02 09:14:05 +0200falafel(~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com)
2021-10-02 09:14:29 +0200aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-10-02 09:18:10 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org) (Remote host closed the connection)
2021-10-02 09:19:15 +0200emf(~emf@2620:10d:c090:400::5:113f) (Quit: emf)
2021-10-02 09:20:05 +0200emf(~emf@2620:10d:c090:400::5:113f)
2021-10-02 09:21:36 +0200iridium__(~iridium@122.175.138.158) (Changing host)
2021-10-02 09:21:36 +0200iridium__(~iridium@user/iridium/x-1824934)
2021-10-02 09:22:57 +0200max22-(~maxime@2a01cb088335980038ece50ee02a7251.ipv6.abo.wanadoo.fr)
2021-10-02 09:25:58 +0200gehmehgeh(~user@user/gehmehgeh)
2021-10-02 09:29:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 09:29:46 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-10-02 09:30:10 +0200emf(~emf@2620:10d:c090:400::5:113f) (Quit: emf)
2021-10-02 09:30:44 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org)
2021-10-02 09:32:42 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2021-10-02 09:33:04 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2021-10-02 09:35:46 +0200xiongxin(~quassel@113.116.33.66) (Ping timeout: 252 seconds)
2021-10-02 09:35:46 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-10-02 09:42:59 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-10-02 09:47:40 +0200dajoer(~david@user/gvx)
2021-10-02 09:49:13 +0200voldial(~user@195.179.201.175) (Changing host)
2021-10-02 09:49:13 +0200voldial(~user@user/voldial)
2021-10-02 09:51:26 +0200jakalx(~jakalx@base.jakalx.net)
2021-10-02 09:52:54 +0200falafel(~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com) (Remote host closed the connection)
2021-10-02 09:53:14 +0200falafel(~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com)
2021-10-02 09:55:01 +0200benin0369323016(~benin@183.82.205.238) (Remote host closed the connection)
2021-10-02 10:01:04 +0200ryantrinkle(~ryan@50.239.20.147) (Read error: Connection reset by peer)
2021-10-02 10:05:28 +0200hendursa1(~weechat@user/hendursaga)
2021-10-02 10:07:01 +0200mbuf(~Shakthi@27.58.139.33) (Quit: Leaving)
2021-10-02 10:08:48 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-10-02 10:10:04 +0200jinsun(~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-10-02 10:15:11 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-10-02 10:17:33 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-10-02 10:17:33 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-10-02 10:17:36 +0200allbery_bgeekosaur
2021-10-02 10:18:05 +0200falafel(~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-10-02 10:18:21 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-10-02 10:19:24 +0200CookE[](~thedawn@user/thedawn)
2021-10-02 10:19:24 +0200fef(~thedawn@user/thedawn)
2021-10-02 10:20:24 +0200xiongxin(~quassel@113.116.33.66)
2021-10-02 10:21:00 +0200fef(~thedawn@user/thedawn) (Client Quit)
2021-10-02 10:22:30 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-10-02 10:24:56 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-10-02 10:25:25 +0200kuribas(~user@ptr-25vy0i8gk2vqd1giqyv.18120a2.ip6.access.telenet.be)
2021-10-02 10:26:41 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Remote host closed the connection)
2021-10-02 10:37:37 +0200nfd(~nfd@user/nfd)
2021-10-02 10:38:21 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-10-02 10:44:22 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-02 10:45:37 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 10:46:37 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-10-02 10:50:07 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
2021-10-02 10:52:55 +0200mei(~mei@user/mei)
2021-10-02 10:57:30 +0200qbt(~edun@user/edun)
2021-10-02 10:58:10 +0200werneta_(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds)
2021-10-02 11:00:07 +0200jakalx(~jakalx@base.jakalx.net)
2021-10-02 11:00:14 +0200qbt(~edun@user/edun) (Client Quit)
2021-10-02 11:03:24 +0200VoidNoir0(~VoidNoir0@72.80.203.52)
2021-10-02 11:05:53 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-10-02 11:23:46 +0200DNH(~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643)
2021-10-02 11:24:40 +0200CookE[](~thedawn@user/thedawn) (Remote host closed the connection)
2021-10-02 11:24:51 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-02 11:26:09 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-02 11:26:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 11:33:16 +0200acidjnk_new(~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
2021-10-02 11:35:38 +0200thelounge9230681(~thelounge@cpe-75-85-161-60.san.res.rr.com)
2021-10-02 11:36:29 +0200acidjnk(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2021-10-02 11:36:29 +0200acidjnk_new3(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2021-10-02 11:37:16 +0200acidjnk(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
2021-10-02 11:38:31 +0200iridium__(~iridium@user/iridium/x-1824934) (Quit: leaving)
2021-10-02 11:39:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-02 11:43:19 +0200thelounge9230681(~thelounge@cpe-75-85-161-60.san.res.rr.com) (Ping timeout: 252 seconds)
2021-10-02 11:45:21 +0200DNH(~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-10-02 11:47:36 +0200hendursa1(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-10-02 11:48:01 +0200alzgh(~alzgh@user/alzgh)
2021-10-02 11:49:34 +0200hendursa1(~weechat@user/hendursaga)
2021-10-02 11:50:30 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-10-02 11:55:18 +0200mjs2600_(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 250 seconds)
2021-10-02 11:56:13 +0200xsperry(~xs@cpe-188-129-101-182.dynamic.amis.hr) (Changing host)
2021-10-02 11:56:13 +0200xsperry(~xs@user/xsperry)
2021-10-02 11:57:20 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-10-02 11:58:15 +0200pera(~pera@user/pera)
2021-10-02 11:59:57 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-10-02 12:04:30 +0200Debate2021(~Debate202@103.134.42.228)
2021-10-02 12:06:19 +0200Debate2021(~Debate202@103.134.42.228) ()
2021-10-02 12:07:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 12:10:07 +0200DNH(~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643)
2021-10-02 12:12:04 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
2021-10-02 12:14:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 12:18:08 +0200jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
2021-10-02 12:23:17 +0200mei(~mei@user/mei) (Quit: mei)
2021-10-02 12:24:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 12:25:05 +0200mei(~mei@user/mei)
2021-10-02 12:25:40 +0200pera(~pera@user/pera) (Ping timeout: 252 seconds)
2021-10-02 12:27:21 +0200 <tomjaguarpaw> I know of four popular streaming libraries: conduit, pipes, streaming, streamly. Are there any others?
2021-10-02 12:33:11 +0200CiaoSen(~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-10-02 12:43:29 +0200pera(~pera@user/pera)
2021-10-02 12:50:57 +0200mestre(~mestre@191.177.175.57)
2021-10-02 12:52:37 +0200pera(~pera@user/pera) (Ping timeout: 252 seconds)
2021-10-02 12:53:46 +0200DNH(~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643) (Quit: Textual IRC Client: www.textualapp.com)
2021-10-02 12:56:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 13:00:08 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-02 13:00:53 +0200alx741(~alx741@181.196.69.214)
2021-10-02 13:01:29 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-02 13:01:57 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-02 13:02:55 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-02 13:04:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 13:05:17 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-02 13:05:26 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-02 13:06:27 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-02 13:08:04 +0200Vajb(~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
2021-10-02 13:09:02 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds)
2021-10-02 13:11:36 +0200AlexNoo_(~AlexNoo@178.34.162.155)
2021-10-02 13:13:05 +0200Alex_test(~al_test@178.34.161.150) (Ping timeout: 252 seconds)
2021-10-02 13:13:53 +0200 <zincy_> transient?
2021-10-02 13:14:00 +0200 <zincy_> https://hackage.haskell.org/package/transient
2021-10-02 13:14:11 +0200AlexZenon(~alzenon@178.34.161.150) (Ping timeout: 252 seconds)
2021-10-02 13:14:27 +0200 <zincy_> Not sure about popular though
2021-10-02 13:15:17 +0200AlexNoo(~AlexNoo@178.34.161.150) (Ping timeout: 252 seconds)
2021-10-02 13:15:34 +0200Cajun(~Cajun@user/cajun)
2021-10-02 13:16:19 +0200CiaoSen(~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 13:16:21 +0200phma_phma
2021-10-02 13:17:23 +0200Alex_test(~al_test@178.34.162.155)
2021-10-02 13:18:14 +0200AlexZenon(~alzenon@178.34.162.155)
2021-10-02 13:28:53 +0200sagax(~sagax_nb@user/sagax) (Ping timeout: 264 seconds)
2021-10-02 13:31:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 13:33:21 +0200BestSteve(~beststeve@220-135-3-239.HINET-IP.hinet.net) (Quit: WeeChat 3.2)
2021-10-02 13:42:41 +0200max22-(~maxime@2a01cb088335980038ece50ee02a7251.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2021-10-02 13:43:24 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-10-02 13:43:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 13:48:19 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
2021-10-02 13:56:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-10-02 14:06:52 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 14:12:04 +0200tabaqui(~root@46.39.45.162) (Quit: WeeChat 3.3)
2021-10-02 14:15:27 +0200fusion86(~fusion@2a02-a44c-e6e5-1-1753-33de-9d65-536a.fixed6.kpn.net)
2021-10-02 14:16:20 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 14:16:27 +0200snekism(~user@88.160.31.174)
2021-10-02 14:19:22 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-10-02 14:19:50 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-02 14:22:25 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 14:24:03 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 14:26:13 +0200Vajb(~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-10-02 14:26:54 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-02 14:28:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds)
2021-10-02 14:30:31 +0200 <maerwald> tomjaguarpaw: and only 2 of them have good performance :p
2021-10-02 14:30:37 +0200max22-(~maxime@2a01cb08833598003de9b0144dce98c8.ipv6.abo.wanadoo.fr)
2021-10-02 14:31:35 +0200jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-10-02 14:33:13 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 14:34:24 +0200jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
2021-10-02 14:44:37 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 14:49:16 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
2021-10-02 14:50:38 +0200AlexNoo_AlexNoo
2021-10-02 14:52:01 +0200mestre(~mestre@191.177.175.57) (Quit: leaving)
2021-10-02 14:55:40 +0200ph88(~ph88@2a02:8109:9e00:7e5c:1cbc:efbb:c578:a980) (Remote host closed the connection)
2021-10-02 15:03:23 +0200Alex_test(~al_test@178.34.162.155) (Quit: ;-)
2021-10-02 15:03:33 +0200AlexZenon(~alzenon@178.34.162.155) (Quit: ;-)
2021-10-02 15:03:56 +0200AlexNoo(~AlexNoo@178.34.162.155) (Quit: Leaving)
2021-10-02 15:09:55 +0200renzhi(~xp@2607:fa49:6500:b100::1d9d)
2021-10-02 15:10:16 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-10-02 15:10:51 +0200CiaoSen(~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-10-02 15:11:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 15:13:00 +0200MQ-17J(~MQ-17J@8.6.144.233)
2021-10-02 15:17:25 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 15:22:33 +0200AlexZenon(~alzenon@178.34.162.155)
2021-10-02 15:22:43 +0200AlexNoo(~AlexNoo@178.34.162.155)
2021-10-02 15:28:30 +0200Alex_test(~al_test@178.34.162.155)
2021-10-02 15:34:30 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 265 seconds)
2021-10-02 15:37:07 +0200rembo10(~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-02 15:37:19 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-02 15:38:00 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-02 15:39:37 +0200rembo10(~rembo10@wally.codeshy.com)
2021-10-02 15:40:10 +0200machinedgod(~machinedg@24.105.81.50)
2021-10-02 15:42:28 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-02 15:44:02 +0200ryantrinkle(~ryan@50.239.20.147)
2021-10-02 15:46:13 +0200jinsun(~quassel@user/jinsun)
2021-10-02 15:49:02 +0200Vajb(~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
2021-10-02 15:49:33 +0200 <tomjaguarpaw> maerwald: which two?
2021-10-02 15:49:42 +0200 <maerwald> tomjaguarpaw: streamly and streaming
2021-10-02 15:50:10 +0200 <tomjaguarpaw> Depends what you mean by good! https://github.com/haskell-streaming/streaming/issues/109
2021-10-02 15:50:41 +0200 <tomjaguarpaw> streamly is the only one I have found that does not have quadratic edge cases
2021-10-02 15:51:11 +0200jinsun(~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-10-02 15:53:04 +0200CiaoSen(~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 15:53:25 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 15:57:04 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-10-02 15:57:27 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-10-02 16:02:08 +0200fendor(~fendor@91.141.55.34.wireless.dyn.drei.com)
2021-10-02 16:02:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 16:05:54 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2021-10-02 16:07:28 +0200 <maerwald> yeah, I personally am only interested in streamly
2021-10-02 16:07:33 +0200 <maerwald> but the API is still a bit rough
2021-10-02 16:08:07 +0200 <tomjaguarpaw> It does seem to be the best thought-through
2021-10-02 16:08:26 +0200 <kuribas> conduit is the easiest to use.
2021-10-02 16:08:43 +0200 <tomjaguarpaw> Why is that?
2021-10-02 16:09:03 +0200norskal(~norskal@101.175.64.73)
2021-10-02 16:09:22 +0200 <kuribas> streamly is a bit awkward, it's like using a list, except it's not a list...
2021-10-02 16:10:08 +0200 <maerwald> kuribas: what??
2021-10-02 16:10:09 +0200 <kuribas> conduit you wait for the input, then yield some output.
2021-10-02 16:10:14 +0200 <maerwald> conduit is over-engineered :p
2021-10-02 16:10:59 +0200azimut_(~azimut@gateway/tor-sasl/azimut)
2021-10-02 16:11:24 +0200 <maerwald> streamly actually is based on streams
2021-10-02 16:11:49 +0200 <kuribas> conduit is more like coroutines
2021-10-02 16:12:09 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-10-02 16:12:46 +0200 <kuribas> streamly claims it's as easy as using lists, but you cannot just pattern matching on a streamly stream.
2021-10-02 16:13:24 +0200 <tomjaguarpaw> That's strange. There's nothing that should stop you from doing that. Do they really not have it in their API?
2021-10-02 16:14:06 +0200 <maerwald> I'm not even sure what that means
2021-10-02 16:14:21 +0200 <tomjaguarpaw> Yeah, here: https://hackage.haskell.org/package/streamly-0.8.0/docs/Streamly-Prelude.html#v:uncons
2021-10-02 16:14:52 +0200 <kuribas> that's not the same simplicity as pattern matching on a list.
2021-10-02 16:15:00 +0200 <maerwald> eh
2021-10-02 16:15:13 +0200 <maerwald> turn the stream into a list then
2021-10-02 16:15:30 +0200 <kuribas> maerwald: then you loose the stream, what is the point?
2021-10-02 16:15:41 +0200 <maerwald> well, not sure what's your problem here
2021-10-02 16:15:47 +0200 <tomjaguarpaw> It is about as simple as pattern matching on a list!
2021-10-02 16:16:38 +0200iridium__(~iridium@user/iridium/x-1824934)
2021-10-02 16:16:40 +0200 <geekosaur> sounds to me like a pattern synonym might iron out any problems anyway?
2021-10-02 16:17:06 +0200 <maerwald> this seems to be more of a case people having trouble navigating the streamly docs and I agree it isn't easy
2021-10-02 16:17:13 +0200 <tomjaguarpaw> I'm not sure what kuribas is objecting to but the uncons has to happen in a monad
2021-10-02 16:17:43 +0200 <kuribas> what I object to is that it isn't a list. If you pattern match twice, you may get different elements.
2021-10-02 16:18:04 +0200 <maerwald> because a stream may run actions, yes
2021-10-02 16:18:12 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-02 16:18:28 +0200 <kuribas> so "it's as easy as using a list", is false IMO.
2021-10-02 16:18:49 +0200 <maerwald> that seems like a fabricated complaint :p
2021-10-02 16:19:09 +0200 <kuribas> whereas conduit is just, read a value from upstream, yield it downstream.
2021-10-02 16:20:22 +0200 <kuribas> well, do something in between first of course.
2021-10-02 16:20:46 +0200 <maerwald> except you need all sorts of odd combinators, while streamly's Monad instance actually makes sense
2021-10-02 16:21:10 +0200Guest28(~Guest28@2a02:120b:c3f4:72c0:2322:7cf4:1b7d:710b)
2021-10-02 16:21:55 +0200 <maerwald> you might also wanna check out the Unfold type in streamly
2021-10-02 16:22:38 +0200 <kuribas> yeah, then there are also folds, lot's of concepts, it's just more complicated that the conduit way of doing things.
2021-10-02 16:22:58 +0200 <maerwald> sounds more to me like you're used to conduit and hence find it easier
2021-10-02 16:23:05 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 16:23:06 +0200 <maerwald> https://github.com/composewell/streamly#an-overview-of-the-types-used-in-these-examples
2021-10-02 16:23:10 +0200 <maerwald> not many types you have to understand
2021-10-02 16:23:18 +0200 <maerwald> basically 4
2021-10-02 16:23:50 +0200 <kuribas> I am not saying it's worse, it may have a good usecase, but I find the conduit interface easier to understand.
2021-10-02 16:24:03 +0200Guest28(~Guest28@2a02:120b:c3f4:72c0:2322:7cf4:1b7d:710b) (Client Quit)
2021-10-02 16:24:03 +0200 <maerwald> I find it mind-boggling whenever I look at it
2021-10-02 16:24:23 +0200geekosaurgot lost almost immediately trying to understand the API
2021-10-02 16:24:37 +0200 <maerwald> one day I figure out how conduit works, 2 weeks later I don't anymore
2021-10-02 16:24:38 +0200 <kuribas> geekosaur: conduit?
2021-10-02 16:24:42 +0200 <maerwald> it's so unintuitive
2021-10-02 16:24:42 +0200 <geekosaur> yeh
2021-10-02 16:25:18 +0200 <tomjaguarpaw> I'm curious why a streamly Unfold m a b is not just an a -> SerialT m b
2021-10-02 16:26:05 +0200 <maerwald> `forall s. Unfold (s -> m (Step s b)) (a -> m s)`
2021-10-02 16:26:10 +0200 <kuribas> tomjaguarpaw: because of the applicative?
2021-10-02 16:27:40 +0200xiongxin(~quassel@113.116.33.66) (Ping timeout: 252 seconds)
2021-10-02 16:27:46 +0200 <tomjaguarpaw> I don't understand either response
2021-10-02 16:28:05 +0200xiongxin(~quassel@113.116.33.66)
2021-10-02 16:28:22 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-10-02 16:28:24 +0200 <maerwald> I don't understand how `a -> SerialT m b` would allow you to define a stepper function
2021-10-02 16:28:46 +0200 <tomjaguarpaw> Do you want to define a stepper function?
2021-10-02 16:29:03 +0200 <tomjaguarpaw> You can't use it for anything other than getting b s out
2021-10-02 16:29:54 +0200 <maerwald> In the stepper, you have Yield, Skip and Stop
2021-10-02 16:30:21 +0200 <tomjaguarpaw> What can you do with it that you can't do with an a -> SerialT m b ?
2021-10-02 16:30:28 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-02 16:30:28 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-02 16:30:28 +0200wroathe(~wroathe@user/wroathe)
2021-10-02 16:31:46 +0200 <kuribas> tomjaguarpaw: maybe it's for performance? Streamly tries very hard to be performant.
2021-10-02 16:32:05 +0200cheater(~Username@user/cheater)
2021-10-02 16:32:13 +0200 <tomjaguarpaw> Yes, possible
2021-10-02 16:32:46 +0200 <kuribas> it even has a plugin that remove intermediate structures.
2021-10-02 16:33:13 +0200 <tomjaguarpaw> "Unfold is an example of an abstraction that we have created to achieve high performance when mapping streams on streams. Unfold allows stream generation to be optimized well by the compiler through stream fusion."
2021-10-02 16:33:17 +0200 <tomjaguarpaw> Perhaps that's it
2021-10-02 16:33:58 +0200 <maerwald> https://hackage.haskell.org/package/streamly-0.8.0/docs/src/Streamly.Internal.Data.Stream.StreamD.…
2021-10-02 16:34:03 +0200kuribas(~user@ptr-25vy0i8gk2vqd1giqyv.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-10-02 16:34:11 +0200 <maerwald> that's basically what you mean I guess
2021-10-02 16:34:57 +0200 <tomjaguarpaw> maerwald: Right
2021-10-02 16:34:58 +0200 <maerwald> tomjaguarpaw: there's StreamD and StreamK btw
2021-10-02 16:35:06 +0200 <maerwald> maybe Unfold abstracts over that
2021-10-02 16:35:46 +0200Guest80(~Guest80@186.122.61.47)
2021-10-02 16:35:48 +0200 <maerwald> I asked once and harendra says they have different performance properties
2021-10-02 16:36:55 +0200 <maerwald> "GHC is able to INLINE and fuse direct style better, providing better performance than CPS implementation."
2021-10-02 16:37:25 +0200 <tomjaguarpaw> Makes sense
2021-10-02 16:37:34 +0200 <maerwald> so you can defer the decision or so
2021-10-02 16:37:44 +0200 <tomjaguarpaw> Unfold is likely subject to the same O(n^2) behaviour I have reported on the other libraries though
2021-10-02 16:37:57 +0200 <tomjaguarpaw> The point of CPS is to right-associate the binds
2021-10-02 16:38:04 +0200Lycurgus(~juan@98.4.112.204)
2021-10-02 16:40:44 +0200iridium__(~iridium@user/iridium/x-1824934) (Quit: leaving)
2021-10-02 16:42:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 16:43:05 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-10-02 16:46:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds)
2021-10-02 16:50:17 +0200acidjnk_new3(~acidjnk@pd9e0b933.dip0.t-ipconnect.de)
2021-10-02 16:51:00 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-10-02 16:53:40 +0200acidjnk(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-10-02 16:53:50 +0200ubert(~Thunderbi@178.115.76.58.wireless.dyn.drei.com)
2021-10-02 16:54:55 +0200 <hololeap> is there any way to customize `cabal init` to, say, also copy in a .gitignore file?
2021-10-02 16:56:17 +0200 <maerwald> cabal init && cp gitignore
2021-10-02 16:56:19 +0200 <maerwald> :p
2021-10-02 16:56:45 +0200 <hololeap> that's too much typing!
2021-10-02 16:56:51 +0200 <maerwald> oh dear
2021-10-02 16:56:55 +0200 <maerwald> but it's unix :)
2021-10-02 16:57:01 +0200 <hololeap> i'm kidding
2021-10-02 16:57:50 +0200 <hololeap> however, it seems to be pulling in files from some kind of skel directory, so could this be modified?
2021-10-02 17:02:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 17:05:18 +0200acidjnk_new(~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-10-02 17:05:18 +0200acidjnk_new3(~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-10-02 17:05:57 +0200 <fusion86> Hey all, this should be a very simple thing but I can't figure out how to convert a Float -> Word8. Anyone got any tips :)
2021-10-02 17:07:02 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds)
2021-10-02 17:09:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 17:09:54 +0200 <nitrix> [Word8] or Word8?
2021-10-02 17:11:23 +0200 <nitrix> A Float wont fit in a Word8 unless it's quite small.
2021-10-02 17:12:21 +0200 <hpc> there's no single thing that could be "converting" - perhaps you want to round the float?
2021-10-02 17:16:20 +0200mei(~mei@user/mei) (Read error: Connection reset by peer)
2021-10-02 17:17:10 +0200alx741(~alx741@181.196.69.214) (Ping timeout: 252 seconds)
2021-10-02 17:21:25 +0200Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-10-02 17:21:41 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 17:22:28 +0200 <fusion86> A Word8, I have 4 floats which I need to convert to a `V4 Word8`. This is because I use two libraries which both have their own `Color` data type.
2021-10-02 17:23:04 +0200 <geekosaur> that's going to be more than just a simple conversion
2021-10-02 17:23:28 +0200 <geekosaur> the Word8s will be 0-255, the Floats could be 0-1 or some other representation
2021-10-02 17:24:55 +0200 <fusion86> The floats are 0-1, so I started with doing `r * 255` but at that point it still is a float. I pretty much just want to ignore the decimals (or round, but that doesn't matter in the grand scale of things) and get a Word8.
2021-10-02 17:26:30 +0200 <geekosaur> :t floor
2021-10-02 17:26:31 +0200 <lambdabot> (RealFrac a, Integral b) => a -> b
2021-10-02 17:26:46 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-10-02 17:27:13 +0200 <justsomeguy> Is it possible to create a datatype that for only the characters 'a'..'z'?
2021-10-02 17:27:28 +0200 <geekosaur> not with some evil type level horkery
2021-10-02 17:27:37 +0200Ranhir(~Ranhir@157.97.53.139) (Read error: Connection reset by peer)
2021-10-02 17:27:39 +0200 <geekosaur> haskell doesn't really support subtyping
2021-10-02 17:27:41 +0200 <hpc> or a newtype wrapper where you control the api
2021-10-02 17:28:16 +0200 <hpc> or if you like typing, data Letter = A | B | C | ...
2021-10-02 17:30:01 +0200alx741(~alx741@186.178.109.221)
2021-10-02 17:31:08 +0200 <dsal> justsomeguy: you can approximate it with a type that allows for all characters, but doesn't export a constructor and has a smart constructor that only allows a subset. And maybe pattern synonyms or something.
2021-10-02 17:32:08 +0200machinedgod(~machinedg@24.105.81.50) (Quit: Lost terminal)
2021-10-02 17:32:08 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 17:32:31 +0200 <fusion86> Neat, `floor` is the function I was looking for. Thanks :)
2021-10-02 17:32:37 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds)
2021-10-02 17:33:20 +0200machinedgod(~machinedg@24.105.81.50)
2021-10-02 17:34:32 +0200 <geekosaur> hm, also I think you want * 256, into a larger type than Word8, then subtract 1 if the result is 256. but then I'd suspect 0-1 actually never returns 1
2021-10-02 17:38:07 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 17:38:29 +0200CannabisIndica(~herb@user/mesaboogie) (Ping timeout: 264 seconds)
2021-10-02 17:38:48 +0200machinedgod(~machinedg@24.105.81.50) (Remote host closed the connection)
2021-10-02 17:39:59 +0200 <monochrom> > round (0.99 * 255) :: Word8
2021-10-02 17:40:00 +0200 <lambdabot> 252
2021-10-02 17:40:37 +0200 <geekosaur> right, I'm thinking you lose a little dynamic range with * 255
2021-10-02 17:40:54 +0200 <monochrom> > round (0.9999 * 255) :: Word8
2021-10-02 17:40:55 +0200 <lambdabot> 255
2021-10-02 17:41:04 +0200 <geekosaur> it's the safer and easier option though
2021-10-02 17:41:08 +0200 <monochrom> > floor (0.9999 * 256) :: Word8
2021-10-02 17:41:09 +0200 <lambdabot> 255
2021-10-02 17:41:47 +0200machinedgod(~machinedg@24.105.81.50)
2021-10-02 17:41:50 +0200 <monochrom> "0.9999 * 25[5,6]" is already done in a larger type :)
2021-10-02 17:42:35 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 265 seconds)
2021-10-02 17:46:42 +0200Ranhir(~Ranhir@157.97.53.139)
2021-10-02 17:47:44 +0200acidjnk(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
2021-10-02 17:47:46 +0200acidjnk_new(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de)
2021-10-02 17:50:17 +0200raym(~raym@user/raym) (Ping timeout: 252 seconds)
2021-10-02 17:53:15 +0200 <tomsmeding> > 1.0 * 256
2021-10-02 17:53:16 +0200 <lambdabot> 256.0
2021-10-02 17:53:30 +0200 <tomsmeding> > floor (1.0 * 256) :: Word8
2021-10-02 17:53:31 +0200 <lambdabot> 0
2021-10-02 17:53:40 +0200xiongxin(~quassel@113.116.33.66) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-10-02 17:53:58 +0200 <hpc> > floor (1.0 * 255) :: Word8
2021-10-02 17:54:00 +0200 <lambdabot> 255
2021-10-02 17:54:24 +0200 <tomsmeding> Yeah probably better to *255
2021-10-02 17:54:51 +0200 <fusion86> The library from where I am converting the color uses `int / 255` which is why I went with that.
2021-10-02 17:55:09 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-10-02 17:55:16 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-10-02 17:55:24 +0200 <tomsmeding> Sounds good
2021-10-02 17:55:51 +0200raym(~raym@user/raym)
2021-10-02 17:56:20 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-10-02 17:57:29 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-10-02 17:58:02 +0200 <fusion86> I have a function which translates/converts from 1 coordinate system to another, it internally uses `gameWidth / 2` every time the function is called. I assume that this division is calculated every time the function is called. gameWidth is a constant though, so is it possible to also make the result a constant somewhere? Pretty much a `constexpr` from c++, does something like that exist?
2021-10-02 17:58:19 +0200 <fusion86> A single division wont actually slow my program, but it's the principle
2021-10-02 17:59:47 +0200 <monochrom> If you have a "foo = gameWidth/2" in a suitable scope, the compiler is forced to reuse it.
2021-10-02 18:00:07 +0200 <monochrom> If you don't, the optimizer may still do it for you, or maybe not, it depends.
2021-10-02 18:00:09 +0200erinvanderveen[4(~erinvande@2001:470:69fc:105::e8f3) (Quit: You have been kicked for being idle)
2021-10-02 18:00:32 +0200harveypwca(~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26) (Quit: Leaving)
2021-10-02 18:00:46 +0200 <monochrom> In both cases, don't assume.
2021-10-02 18:01:25 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-02 18:01:49 +0200 <monochrom> These days, people don't even have a good idea what C and C++ optimizers do. (They just use Dunning-Kruger to congratulate themselves that they think they do.) So nevermind the even less familiar GHC.
2021-10-02 18:03:07 +0200fizzsegfaultbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-10-02 18:03:09 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 18:03:10 +0200 <fusion86> Hm, I guess I'll just not worry about that then, because in the end a single division wont actually be noticeable (even if run 10 times a second)
2021-10-02 18:03:13 +0200 <nitrix> I agree with monochrom, profile if it's important. I will say though, there a big chance it does gets optimized, that's a fairly trivial reduction for SSA (which GHC has).
2021-10-02 18:04:10 +0200 <monochrom> Even 30 years ago, if you look at a C loop (or Fortran for that matter) like "for (i = 0; i < n; i++) { ... a[i] ... }" and think "a + i*sizeof(whatever)" has an expensive multiplication and you "need" to hand-optimize that to manual pointer games,...
2021-10-02 18:04:25 +0200 <monochrom> NO, the C optimizer already does that for you.
2021-10-02 18:05:04 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
2021-10-02 18:05:20 +0200 <monochrom> Even 30 years ago, when people continued to perpetuate the fantasy that recursion always takes up stack space...
2021-10-02 18:05:29 +0200 <monochrom> NO, gcc already does TCO for you.
2021-10-02 18:06:38 +0200 <monochrom> If you have neither read compiler-generated asm code or taken a course on code optimization...
2021-10-02 18:06:43 +0200 <monochrom> Assume that you're wrong.
2021-10-02 18:07:09 +0200 <hpc> and if you have, you're probably still wrong
2021-10-02 18:07:27 +0200 <monochrom> And I haven't even touched the toggling story of cache locality.
2021-10-02 18:07:30 +0200 <hpc> citation: optimization of UB
2021-10-02 18:07:51 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2021-10-02 18:08:33 +0200 <monochrom> Yeah, if you think, like I did, that "n = 1; c = 0; while (n != 0) { n *= 2; c++}" helps me count how many bits the machine word has...
2021-10-02 18:08:55 +0200MQ-17J(~MQ-17J@8.6.144.233) (Ping timeout: 252 seconds)
2021-10-02 18:08:57 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-10-02 18:09:01 +0200 <monochrom> gcc -O2 optimizes that to "mylabel : jmp mylabel"
2021-10-02 18:10:09 +0200 <monochrom> What's funny is that -O1 goes only so far as "increment c 32 times" or something.
2021-10-02 18:10:23 +0200 <int-e> should've used unsigned int
2021-10-02 18:10:29 +0200 <monochrom> I did.
2021-10-02 18:10:30 +0200 <nitrix> fusion86, I would be more careful about memory reads or writes. On a cache miss, just one of those can completely outweight one order, sometimes two orders, the amount of multiplications. Skeletal animation for example has a lot of matrix multiplication and it's much faster to just recompute them each frame than fetching from memory the precomputed result (if they change often enough, like every frame, but not often enough to remain in cache).
2021-10-02 18:10:52 +0200 <nitrix> fusion86, Game development is fun like that. I've never done it in Haskell so I'm sure that'll have its own set of surprises.
2021-10-02 18:11:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-02 18:11:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-02 18:11:33 +0200wroathe(~wroathe@user/wroathe)
2021-10-02 18:11:45 +0200 <int-e> monochrom: you didn't
2021-10-02 18:12:33 +0200Null_A(~null_a@2601:645:8700:2290:e9de:2461:c7b1:d42b)
2021-10-02 18:12:41 +0200 <geekosaur> isn't this the one you pasted the C source and resulting asm from some years ago?
2021-10-02 18:12:48 +0200 <monochrom> Yes.
2021-10-02 18:12:58 +0200 <int-e> monochrom: with `int` it's undefined behavior; `unsigned int` is specified to work modulo 2^w where w is the bit size of the int.
2021-10-02 18:13:11 +0200CnnibisIndica(~herb@user/mesaboogie)
2021-10-02 18:13:55 +0200 <int-e> > 2^30 * 2 :: Int
2021-10-02 18:13:56 +0200 <lambdabot> 2147483648
2021-10-02 18:14:02 +0200 <int-e> > 2^62 * 2 :: Int
2021-10-02 18:14:03 +0200 <lambdabot> -9223372036854775808
2021-10-02 18:14:29 +0200 <monochrom> I mean C.
2021-10-02 18:16:01 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-10-02 18:16:15 +0200 <fusion86> The game framework we need to use is pretty high level (Gloss) so I assume that most performance is lost there. I also hacked sdl2_ttf into the project to render some neat text, so that's probably also a large performance hit (though I didn't test)
2021-10-02 18:16:30 +0200 <int-e> monochrom: I guess you may have triggered a compiler bug at some point but... I'm not aware of gcc ever getting this particular case wrong.
2021-10-02 18:18:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 18:22:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 264 seconds)
2021-10-02 18:25:16 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-10-02 18:25:28 +0200q_implies_not_q(~p_implies@host-46-33.ilcujsm.champaign.il.us.clients.pavlovmedia.net)
2021-10-02 18:26:06 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-10-02 18:30:09 +0200CnnibisIndicaCannabisIndica
2021-10-02 18:32:47 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-10-02 18:33:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 18:37:31 +0200q_implies_not_q(~p_implies@host-46-33.ilcujsm.champaign.il.us.clients.pavlovmedia.net) (Quit: Leaving)
2021-10-02 18:38:52 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-10-02 18:41:23 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-10-02 18:41:59 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-10-02 18:43:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-10-02 18:43:56 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-10-02 18:44:08 +0200ubert(~Thunderbi@178.115.76.58.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-02 18:44:52 +0200ubert(~Thunderbi@178.115.76.58.wireless.dyn.drei.com)
2021-10-02 18:49:10 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 18:53:14 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 18:55:54 +0200snekism(~user@88.160.31.174) (Remote host closed the connection)
2021-10-02 18:56:23 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-02 18:56:23 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-02 18:56:23 +0200wroathe(~wroathe@user/wroathe)
2021-10-02 18:56:24 +0200Vajb(~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-10-02 18:57:00 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-02 18:59:10 +0200TDANG_(~TDANG@216.63.184.7)
2021-10-02 18:59:16 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-10-02 19:02:20 +0200TDANG(~TDANG@inet-177-7.ets.org) (Ping timeout: 252 seconds)
2021-10-02 19:03:23 +0200fusion86(~fusion@2a02-a44c-e6e5-1-1753-33de-9d65-536a.fixed6.kpn.net) (Remote host closed the connection)
2021-10-02 19:03:55 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-10-02 19:06:11 +0200econo(uid147250@user/econo)
2021-10-02 19:06:21 +0200jaitoon(~Jaitoon@2a02:c7f:a5f:1d00:3434:15c8:b68c:cba1)
2021-10-02 19:09:22 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-10-02 19:11:52 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-10-02 19:12:54 +0200cheater(~Username@user/cheater)
2021-10-02 19:19:11 +0200chisui(~chisui@200116b868bc9f00884a12b19ab3b2f3.dip.versatel-1u1.de)
2021-10-02 19:19:17 +0200 <awpr> a few weeks ago we were looking into a case of a Gloss program being pretty slow, and it turned out it uses the legacy OpenGL API that calls into OpenGL once for every vertex, and pushes/pops the geometry transform matrix stack for every translation. it might just have a performance ceiling when there's a lot of geometry
2021-10-02 19:20:51 +0200 <Hecate> damn
2021-10-02 19:27:47 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-10-02 19:28:49 +0200__monty__(~toonn@user/toonn)
2021-10-02 19:29:50 +0200Pacra(~Pacra@pool-100-11-34-209.phlapa.fios.verizon.net) (Ping timeout: 252 seconds)
2021-10-02 19:32:08 +0200hueso(~root@user/hueso)
2021-10-02 19:36:19 +0200Zer000(~phil@64.137.132.26)
2021-10-02 19:36:37 +0200 <maerwald> awpr: ah the thing with a max stack of 30 or so?
2021-10-02 19:38:09 +0200 <awpr> hmm, I never thought about there being a limit, but I guess that makes sense. in this case the problem was more that it was expensive to do a separate matrix multiply and GL FFI call for basically every polygon
2021-10-02 19:44:49 +0200 <awpr> oh, fusion86 already left anyway. I'm just responding into the void :/
2021-10-02 19:49:11 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-10-02 19:49:22 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2021-10-02 19:49:56 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2021-10-02 19:52:21 +0200charukiewicz(~quassel@108.210.196.136) (Quit: No Ping reply in 180 seconds.)
2021-10-02 19:53:22 +0200ss4(~wootehfoo@user/wootehfoot)
2021-10-02 19:53:49 +0200charukiewicz(~quassel@108.210.196.136)
2021-10-02 19:53:50 +0200kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net)
2021-10-02 19:54:20 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-10-02 19:54:59 +0200hendursaga(~weechat@user/hendursaga)
2021-10-02 19:55:53 +0200kimjetwav(~user@2607:fea8:235f:9730:49e1:79a9:994b:782d) (Remote host closed the connection)
2021-10-02 19:56:10 +0200kimjetwav(~user@2607:fea8:235f:9730:48ad:b7dd:9c1e:6d8d)
2021-10-02 19:56:40 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds)
2021-10-02 19:58:11 +0200mekeor[m](~mekeormat@2001:470:69fc:105::17e4)
2021-10-02 19:59:53 +0200 <mekeor[m]> is there a package on hackage which provides a function f of type `String -> String` which evaluates arithmetic expressions? e.g. `f "1+2"` would equal `"3"`.
2021-10-02 20:00:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-10-02 20:00:18 +0200 <geekosaur> hint? mueval?
2021-10-02 20:00:49 +0200 <geekosaur> (mueval is based on hint but provides protections, for example it accepts arbitrary Haskell expressions but disallows IO)
2021-10-02 20:01:19 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Quit: Leaving)
2021-10-02 20:01:22 +0200kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection)
2021-10-02 20:02:14 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-10-02 20:02:32 +0200 <geekosaur> I don't know of one limited to arithmetic evaluations, but those are kinda uninteresting anyway: at minimum you often want simple functions
2021-10-02 20:03:11 +0200 <geekosaur> and that gets you into how you best structure them for your needs since there's several possible ways to do it, each with its own shortcomings
2021-10-02 20:03:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 20:03:27 +0200max22-(~maxime@2a01cb08833598003de9b0144dce98c8.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2021-10-02 20:06:08 +0200 <mekeor[m]> well, i actually really just want an arithmetic calculator. but thanks anyway
2021-10-02 20:07:09 +0200kayvank(~user@52-119-115-185.public.monkeybrains.net)
2021-10-02 20:07:36 +0200kayvank(~user@52-119-115-185.public.monkeybrains.net) (Client Quit)
2021-10-02 20:09:00 +0200__monty__(~toonn@user/toonn)
2021-10-02 20:10:14 +0200 <monochrom> Hutton's Haskell textbook has an arithmetic calculator.
2021-10-02 20:10:19 +0200 <mekeor[m]> i once wrote such a package myself, but it does not support paranthesis x)
2021-10-02 20:10:58 +0200 <monochrom> Since it is known upfront that there are only like 5 operations, it can easily be represented as vanilla data.
2021-10-02 20:11:43 +0200wroathe(~wroathe@50-205-197-50-static.hfc.comcastbusiness.net)
2021-10-02 20:11:43 +0200wroathe(~wroathe@50-205-197-50-static.hfc.comcastbusiness.net) (Changing host)
2021-10-02 20:11:43 +0200wroathe(~wroathe@user/wroathe)
2021-10-02 20:17:26 +0200 <mekeor[m]> monochrom: you mean, i could check if the input-string matches the regex [0-9\.+-*/^] before i pass it to "hint"?
2021-10-02 20:18:17 +0200 <monochrom> No, Hutton's book doesn't use hint.
2021-10-02 20:18:18 +0200 <geekosaur> no, I think he's saying you avoid the problems I mentioned with writing your own if you're not supporting bindings, functions, etc.
2021-10-02 20:18:41 +0200 <monochrom> It doesn't use regexes either.
2021-10-02 20:23:15 +0200Lycurgus(~juan@98.4.112.204)
2021-10-02 20:24:40 +0200 <[exa]> mekeor[m]: calculators are kinda 5-line exercise in megaparsec, I guess if you google megaparsec tutorials you'll find one
2021-10-02 20:27:20 +0200snekism(~user@88.160.31.174)
2021-10-02 20:32:00 +0200aegon(~mike@174.127.249.180)
2021-10-02 20:34:37 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-10-02 20:38:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-10-02 20:39:02 +0200max22-(~maxime@2a01cb0883359800842b86a07baa5676.ipv6.abo.wanadoo.fr)
2021-10-02 20:46:52 +0200Sgeo(~Sgeo@user/sgeo)
2021-10-02 20:50:41 +0200nfd(~nfd@user/nfd) (Ping timeout: 252 seconds)
2021-10-02 20:53:47 +0200max22-(~maxime@2a01cb0883359800842b86a07baa5676.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2021-10-02 20:58:22 +0200 <aegon> i'm looking for a good matrix library in haskell for standard glm type functionality, I found hmatrix but it doesn't have a notion of quaternions which I have to interact with quite a lot and writing a quaternion to matrix function is not trivial. is there a composable library with this that provides those things or does anyone know of a different matrix lib in haskell that fits the bill better for
2021-10-02 20:58:28 +0200 <aegon> geometric operations
2021-10-02 20:59:51 +0200 <aegon> oh linear might be better
2021-10-02 21:00:27 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-10-02 21:00:30 +0200 <Lycurgus> quaternions are their own thing, there's several hs pkgs iirc
2021-10-02 21:01:05 +0200 <aegon> well, they are hteir own things but going from linear to rotation matrix is a normal operation in my domain
2021-10-02 21:01:08 +0200 <aegon> and vice versa
2021-10-02 21:01:08 +0200 <Lycurgus> usually filed under classical nick nacks
2021-10-02 21:01:28 +0200 <aegon> s/linear/quaternion/g
2021-10-02 21:02:10 +0200 <Lycurgus> math bric a brac
2021-10-02 21:02:13 +0200terrorjack(~terrorjac@static.3.200.12.49.clients.your-server.de)
2021-10-02 21:02:27 +0200machinedgod(~machinedg@24.105.81.50)
2021-10-02 21:02:57 +0200 <aegon> maybe theres a quaternion library that gives me a list of lists that is the rotation matrix equivalent
2021-10-02 21:04:13 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-02 21:04:31 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-02 21:04:48 +0200Null_A(~null_a@2601:645:8700:2290:e9de:2461:c7b1:d42b) (Remote host closed the connection)
2021-10-02 21:05:10 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-10-02 21:07:09 +0200 <aegon> linear / linear-accelerate seem to have all the bells and whistles needed
2021-10-02 21:10:09 +0200ss4(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2021-10-02 21:10:26 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2021-10-02 21:21:00 +0200Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-10-02 21:22:42 +0200Lorra(~lorenzo@2001:a61:be4:201:2c70:ff42:b0f:e800)
2021-10-02 21:28:53 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-10-02 21:30:58 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-10-02 21:32:32 +0200Lorra(~lorenzo@2001:a61:be4:201:2c70:ff42:b0f:e800) (Quit: Konversation terminated!)
2021-10-02 21:37:25 +0200yinghua(~yinghua@181.228.40.183)
2021-10-02 21:38:27 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-10-02 21:39:42 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-10-02 21:39:57 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-10-02 21:40:31 +0200gehmehgeh(~user@user/gehmehgeh)
2021-10-02 21:45:36 +0200fendor(~fendor@91.141.55.34.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-02 21:48:29 +0200fendor(~fendor@91.141.55.34.wireless.dyn.drei.com)
2021-10-02 21:48:30 +0200fendor_(~fendor@91.141.55.34.wireless.dyn.drei.com)
2021-10-02 21:48:31 +0200fendor__(~fendor@91.141.55.34.wireless.dyn.drei.com)
2021-10-02 21:57:03 +0200fendor__(~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving)
2021-10-02 21:57:06 +0200fendor_(~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving)
2021-10-02 21:57:13 +0200fendor(~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving)
2021-10-02 21:58:01 +0200snekism`(~user@88.160.31.174)
2021-10-02 21:59:55 +0200snekism(~user@88.160.31.174) (Ping timeout: 252 seconds)
2021-10-02 22:04:52 +0200azeem(~azeem@2a00:801:428:f4e3:face:8eed:b26f:ce9c) (Ping timeout: 252 seconds)
2021-10-02 22:04:56 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 252 seconds)
2021-10-02 22:05:49 +0200 <hololeap> what ever happened to ski?
2021-10-02 22:08:31 +0200juhp(~juhp@128.106.188.220)
2021-10-02 22:08:40 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-10-02 22:12:33 +0200norskal(~norskal@101.175.64.73) (Quit: Ping timeout (120 seconds))
2021-10-02 22:13:00 +0200 <hpc> he got simplified to sk
2021-10-02 22:15:42 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-10-02 22:18:01 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 252 seconds)
2021-10-02 22:19:51 +0200fr33domlover1fr33domlover
2021-10-02 22:20:21 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-10-02 22:29:32 +0200wroathe(~wroathe@user/wroathe)
2021-10-02 22:34:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-02 22:35:26 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-10-02 22:45:11 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-10-02 22:54:26 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 246 seconds)
2021-10-02 22:55:01 +0200 <zwro[m]> what do we call it when we do `a <- someMonad`?
2021-10-02 22:55:07 +0200 <zwro[m]> "unbinding"?
2021-10-02 22:55:57 +0200 <[exa]> "binding" actually
2021-10-02 22:56:13 +0200 <Hecate> zwro[m]: nothing more than binding :)
2021-10-02 22:56:21 +0200 <Hecate> https://en.wikibooks.org/wiki/Haskell/do_notation
2021-10-02 22:57:16 +0200 <zwro[m]> ok makes sense
2021-10-02 22:58:01 +0200 <zwro[m]> my intuition was that the real binding happens in the next line
2021-10-02 22:58:11 +0200 <[exa]> in certain cases you might say it's a bit like "unwrapping", but with many monads that's misleading
2021-10-02 22:58:37 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org) (Remote host closed the connection)
2021-10-02 22:59:11 +0200 <zwro[m]> yeah. i was considering "lifting" and gave up on it for the same reason
2021-10-02 22:59:12 +0200 <[exa]> it gets rewritten to something like `... someMonad >>= \a -> ...nextline...`, so yeah, technically `a` is bound for the next line
2021-10-02 23:00:12 +0200 <[exa]> (name "lifting" is usually reserved for the other direction, making a function work through some extra semantics)
2021-10-02 23:01:13 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2021-10-02 23:01:53 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-10-02 23:02:03 +0200 <zwro[m]> yeah... words are confusing
2021-10-02 23:02:13 +0200 <[exa]> (like, `map f` is the function `f` lifted to work on lists, and the actual name can be seen e.g. in `liftA2`)
2021-10-02 23:03:24 +0200ubert(~Thunderbi@178.115.76.58.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-02 23:03:49 +0200 <zwro[m]> liftA2 f a b = f <$> a <*> , right?
2021-10-02 23:04:03 +0200 <zwro[m]> ^ missed the b at the end
2021-10-02 23:04:04 +0200 <[exa]> yes that should work
2021-10-02 23:04:21 +0200 <awpr> the funnest part of all this is that "map" seems to have come from the definition of a functor "... along with a map of morphisms in C to morphisms in D", in which context it just means "a function"
2021-10-02 23:04:56 +0200 <zwro[m]> well, functions are maps
2021-10-02 23:05:37 +0200 <awpr> right, it was used as a totally generic term and then accidentally acquired a very specific meaning by being used as the name of a class method
2021-10-02 23:05:54 +0200 <awpr> if that's actually how the etymology happened, anyway
2021-10-02 23:06:11 +0200 <zwro[m]> and now we even have fmap
2021-10-02 23:06:35 +0200 <zwro[m]> words...
2021-10-02 23:06:43 +0200 <[exa]> mapmap from now on
2021-10-02 23:07:05 +0200 <zwro[m]> aha fair. that's why i like lambda calculos. names are irrelevant
2021-10-02 23:07:24 +0200 <zwro[m]> what's in a name? said the bard
2021-10-02 23:07:33 +0200 <awpr> if we started using lambda calculus for large scale software development, names would instantly become relevant
2021-10-02 23:07:36 +0200Lycurgus(~juan@98.4.112.204)
2021-10-02 23:08:21 +0200 <awpr> `Endo`, `Endo`, wherefore art thou `Endo`?
2021-10-02 23:08:55 +0200 <[exa]> needs starwars memes with endor
2021-10-02 23:09:19 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-10-02 23:11:34 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org)
2021-10-02 23:12:05 +0200 <zwro[m]> let a = Nothing:a in a
2021-10-02 23:12:57 +0200 <zwro[m]> ^ in the Merchant of Venice, this is an insult
2021-10-02 23:13:39 +0200zebrag(~chris@user/zebrag)
2021-10-02 23:13:45 +0200kimjetwav(~user@2607:fea8:235f:9730:48ad:b7dd:9c1e:6d8d) (Remote host closed the connection)
2021-10-02 23:14:46 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 250 seconds)
2021-10-02 23:15:55 +0200unmanbearpig(~unmanbear@user/unmanbearpig) (Ping timeout: 252 seconds)
2021-10-02 23:16:26 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-10-02 23:16:52 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2021-10-02 23:17:21 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-10-02 23:17:37 +0200zero(~yin@user/zero) ()
2021-10-02 23:17:46 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-10-02 23:18:18 +0200zzz(~yin@user/zero)
2021-10-02 23:18:23 +0200Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-10-02 23:20:23 +0200jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-10-02 23:21:45 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 23:27:44 +0200ByronJohnson(~bairyn@mail.digitalkingdom.org) (Remote host closed the connection)
2021-10-02 23:31:32 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-10-02 23:35:46 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2021-10-02 23:35:50 +0200Guest80(~Guest80@186.122.61.47) (Quit: Connection closed)
2021-10-02 23:36:03 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-02 23:39:07 +0200unmanbearpig(~unmanbear@user/unmanbearpig)
2021-10-02 23:43:49 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-10-02 23:44:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1)
2021-10-02 23:44:21 +0200acidjnk_new3(~acidjnk@p200300d0c703cb484c7d47010f4c2dbe.dip0.t-ipconnect.de)
2021-10-02 23:47:28 +0200 <zzz> "You speak an infinite deal of nothing!"
2021-10-02 23:48:05 +0200acidjnk_new(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-10-02 23:48:05 +0200acidjnk(~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-10-02 23:48:23 +0200acidjnk(~acidjnk@p200300d0c703cb484c7d47010f4c2dbe.dip0.t-ipconnect.de)
2021-10-02 23:51:40 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-10-02 23:55:40 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-02 23:58:46 +0200machinedgod(~machinedg@24.105.81.50)