2022/01/25

2022-01-25 00:02:15 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 00:03:18 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2022-01-25 00:05:36 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-01-25 00:05:49 +0100califax(~califax@user/califx)
2022-01-25 00:07:17 +0100haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
2022-01-25 00:09:14 +0100neceve(~quassel@2.26.93.228) (Ping timeout: 268 seconds)
2022-01-25 00:12:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-25 00:14:14 +0100hololeap(~hololeap@user/hololeap)
2022-01-25 00:17:15 +0100alp(~alp@user/alp) (Ping timeout: 268 seconds)
2022-01-25 00:18:52 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-01-25 00:19:05 +0100 <Axman6> I've wondered for a while if there's a way to change foldl (the library) so that the step function can be replaced - there are many folds which are implemented by passing around some state which at some point becomes redundant, for example drop (drop :: Natural -> Fold a b -> Fold a b) continues to pass around a Natural after finishing counting down - it would be nice if it could just swap its step function and state to the one it's wrapping
2022-01-25 00:19:39 +0100 <Axman6> maybe that would break a lot of the benefits of the composability of foldl
2022-01-25 00:20:32 +0100iteratee(~kyle@162.218.222.107)
2022-01-25 00:20:42 +0100alx741(~alx741@157.100.93.160)
2022-01-25 00:21:34 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 00:21:34 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 00:21:34 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 00:24:02 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 268 seconds)
2022-01-25 00:24:07 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-01-25 00:24:24 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 00:26:00 +0100 <Axman6> The way I'd been thinking about it was more in terms of stream fucion's Step type data Step s a = Yield a s | Skip s | Done. The change I was thinking of would be something like: data Step a s b = Yield b s | Skip s | Done | Update (Fold a b)
2022-01-25 00:26:04 +0100 <Axman6> I should play with this...
2022-01-25 00:26:30 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-01-25 00:26:46 +0100geekosaurwonders how long before you've reinvented conduit or pipes
2022-01-25 00:28:30 +0100lispy(~lispy4@84.69.59.93)
2022-01-25 00:30:22 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-01-25 00:30:26 +0100 <Axman6> well, there's a FoldM too, so I guess that's not too far off
2022-01-25 00:31:07 +0100polezaivsani(~polezaivs@orangeshoelaces.net) (Ping timeout: 256 seconds)
2022-01-25 00:33:10 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Quit: WeeChat 3.4)
2022-01-25 00:33:36 +0100chomwitt(~chomwitt@2a02:587:dc06:be00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2022-01-25 00:33:38 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 00:34:31 +0100cosimone(~user@93-34-132-251.ip49.fastwebnet.it) (Ping timeout: 256 seconds)
2022-01-25 00:36:16 +0100 <Axman6> I guess you could fake it by using the state variable which contains the function to call, which can be updated
2022-01-25 00:36:22 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
2022-01-25 00:40:05 +0100 <EvanR> if the state becomes useless and should be dropped, why is there an exposed s type variable
2022-01-25 00:41:15 +0100 <EvanR> this is reminding me of KSP / rocketry where you need stages to begin then you need to discard at some point
2022-01-25 00:41:25 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 00:42:19 +0100alx741(~alx741@157.100.93.160)
2022-01-25 00:43:51 +0100 <monochrom> I thought Haskell was not rocket science >:)
2022-01-25 00:44:37 +0100 <monochrom> There is an exposed type variable, but you still can't change it in the middle.
2022-01-25 00:44:54 +0100 <EvanR> I mean why is it there in the first place
2022-01-25 00:45:15 +0100 <EvanR> and not existential, or just not in the type
2022-01-25 00:45:40 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 00:46:02 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 240 seconds)
2022-01-25 00:46:33 +0100 <EvanR> imagine an OOP type system where each class must declare the type of its internal state
2022-01-25 00:47:00 +0100 <EvanR> i.e. why is it anyone's business
2022-01-25 00:53:05 +0100 <monochrom> If the Fold type exposes s, then the programmer who uses Fold has the flexibility of controlling in which scope s is known, outside which scope s is unknown. I.e., where to put the existential quantifier.
2022-01-25 00:53:38 +0100 <hpc> s isn't really the state type
2022-01-25 00:53:46 +0100 <hpc> if you go all the way down, it ends up being a phantom type
2022-01-25 00:53:56 +0100 <EvanR> tricky
2022-01-25 00:54:00 +0100 <hpc> maybe it's better to say s is the scope of the statefulness
2022-01-25 00:55:00 +0100 <hpc> with RealWorld meaning global state
2022-01-25 00:55:04 +0100 <monochrom> In OOP, I thought I had to declare the types of fields in my class, too. Here: class Complex { private double realpart; private double imagpart; }
2022-01-25 00:55:56 +0100 <hpc> "state" and "scope" both start with s, and s is used in "State s a" too, so that's a bit unfortunate
2022-01-25 00:55:59 +0100 <hpc> but there you go
2022-01-25 00:56:05 +0100 <EvanR> but is a circle in the complex plane also an ellipse in the complex plane
2022-01-25 00:56:27 +0100 <monochrom> haha
2022-01-25 00:57:00 +0100 <hpc> it's actually just a rectangle in a hyperbolic complex geometry :D
2022-01-25 00:57:06 +0100 <hpc> there are no circles
2022-01-25 00:58:41 +0100 <monochrom> Oh yeah let me relate a story.
2022-01-25 00:59:08 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Changing host)
2022-01-25 00:59:08 +0100vgtw(~vgtw@user/vgtw)
2022-01-25 01:00:23 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:cceb:625b:cb9d:590d) (Remote host closed the connection)
2022-01-25 01:00:26 +0100 <monochrom> A computer graphics prof was explaining to a math prof the fact that raytracing a sphere and raytracing a cube require different algorithms.
2022-01-25 01:00:47 +0100 <hpc> this is going to be good
2022-01-25 01:00:55 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:cceb:625b:cb9d:590d)
2022-01-25 01:01:02 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-01-25 01:01:12 +0100 <monochrom> The math prof said: But a cube is a sphere under the infinity norm!
2022-01-25 01:01:48 +0100 <monochrom> I cried at both the beauty and the irrelevance of that.
2022-01-25 01:02:18 +0100 <hpc> someday i hope to be that useless
2022-01-25 01:02:41 +0100 <EvanR> google filament has some nice looking pics in its nice looking docs
2022-01-25 01:02:53 +0100 <EvanR> including spheres
2022-01-25 01:03:28 +0100SummerSonw(~The_viole@203.77.49.232)
2022-01-25 01:03:56 +0100alx741(~alx741@157.100.93.160)
2022-01-25 01:05:16 +0100lispy(~lispy4@84.69.59.93) (Quit: Leaving)
2022-01-25 01:05:32 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-25 01:06:21 +0100 <EvanR> realtalk for a second, how the F does Printf work
2022-01-25 01:06:37 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
2022-01-25 01:07:17 +0100 <monochrom> The f in printf stands for "format string" <duck>
2022-01-25 01:07:17 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 01:07:56 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 01:08:47 +0100 <hpc> EvanR: Printf's instances let you write arbitrarily long chains of a -> b -> c -> ... -> IO ()
2022-01-25 01:08:54 +0100 <hpc> (or -> String)
2022-01-25 01:09:11 +0100 <hpc> and then the format string just has to have placeholders for a, b, c, etc
2022-01-25 01:09:39 +0100 <geekosaur> yeh, PrintfType is pretty freaky
2022-01-25 01:09:42 +0100 <hpc> the type determines what format strings work, instead of like in C where the format string would determine if the parameters are valid
2022-01-25 01:10:02 +0100 <EvanR> so a bad format string waits until runtime to fail?
2022-01-25 01:10:06 +0100 <hpc> yes
2022-01-25 01:10:08 +0100 <EvanR> ok
2022-01-25 01:10:13 +0100 <hpc> same as in C
2022-01-25 01:10:17 +0100 <geekosaur> there's at least one compile-time printf, though
2022-01-25 01:10:21 +0100 <hpc> the class just makes it variadic
2022-01-25 01:10:39 +0100 <EvanR> in C there is a warning xd
2022-01-25 01:10:57 +0100 <hpc> only for static format strings
2022-01-25 01:11:10 +0100 <EvanR> which is all there is right. right?
2022-01-25 01:11:13 +0100 <geekosaur> there's also a warning if your format string isn't static :)
2022-01-25 01:11:15 +0100 <hpc> because libc is... libc, compilers are aware of it like linters are aware of indentation
2022-01-25 01:11:24 +0100yassernasc(~yassernas@2804:29b8:505a:f33d:65bb:7e4c:2cd0:965) (Remote host closed the connection)
2022-01-25 01:11:42 +0100 <hpc> but it's not something you can count on, and you can't write a printf that has the same level of checking
2022-01-25 01:11:52 +0100 <hpc> whereas you can write Printf yourself
2022-01-25 01:12:37 +0100 <hpc> in a language like idris, you could fully validate the format string within the type checker
2022-01-25 01:12:58 +0100 <hpc> or maybe with a format string lifted to a type you can do it in haskell too
2022-01-25 01:13:53 +0100 <geekosaur> https://hackage.haskell.org/package/typelits-printf
2022-01-25 01:14:30 +0100img(~img@user/img)
2022-01-25 01:15:50 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-25 01:16:59 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2022-01-25 01:18:50 +0100shriekingnoise(~shrieking@201.231.16.156) (Ping timeout: 250 seconds)
2022-01-25 01:19:17 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
2022-01-25 01:19:39 +0100ProfSimm(~ProfSimm@87.227.196.109) (Ping timeout: 256 seconds)
2022-01-25 01:19:51 +0100 <jackdk> there's also GCC (and probably LLVM) annotations you can attach to functions that say "this function accepts a printf-style format string
2022-01-25 01:20:18 +0100 <geekosaur> right, but you can't define your own format specifiers for e.g. dates
2022-01-25 01:20:48 +0100 <hpc> you also can't define your own format types
2022-01-25 01:20:59 +0100 <hpc> imagine you're writing a code generator of some sort, and you want a format AST
2022-01-25 01:21:49 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-25 01:22:38 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-25 01:22:39 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 01:25:33 +0100alx741(~alx741@157.100.93.160)
2022-01-25 01:27:30 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-01-25 01:29:56 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 01:34:35 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2022-01-25 01:34:46 +0100 <Axman6> EvanR: hpc: in what I was talking about, s is definitely the state type (called x internally in foldl). The reason for Update returing a new Fold is so that the existential s/x inside the Fold can chage
2022-01-25 01:34:49 +0100 <Axman6> change*
2022-01-25 01:35:16 +0100thyriaen(~thyriaen@dynamic-078-055-124-059.78.55.pool.telefonica.de) (Quit: Leaving)
2022-01-25 01:35:37 +0100td_(~td@94.134.91.163) (Ping timeout: 240 seconds)
2022-01-25 01:36:37 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-01-25 01:37:24 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-25 01:40:05 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-01-25 01:40:29 +0100 <Axman6> EvanR: The Step type isn't visible externally to anything, the fold would look like: data Fold a b = forall s. Fold (s -> a -> Step a s b) s (s -> b)
2022-01-25 01:41:11 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 256 seconds)
2022-01-25 01:41:41 +0100 <monochrom> Oops. What I said of Fold, should be for Step then.
2022-01-25 01:41:48 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-01-25 01:42:12 +0100 <EvanR> so if you erase s from that, you get Mealy, I'm guessing
2022-01-25 01:42:26 +0100 <EvanR> where the state could change type or disappear
2022-01-25 01:42:58 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 268 seconds)
2022-01-25 01:44:34 +0100 <Axman6> and if Step is ever Update, then whatever is executing the fold will just update its step and done functions when executing its loop
2022-01-25 01:45:02 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2022-01-25 01:46:22 +0100lavaman(~lavaman@98.38.249.169)
2022-01-25 01:48:19 +0100alx741(~alx741@157.100.93.160)
2022-01-25 01:49:29 +0100 <Axman6> so, drop would look like: drop n (Fold step0 st0 done0) = Fold step n done where step 0 a = Update (Fold step0 (step0 a st0) done0); step n = Skip (n-1); done _ = done0 st0
2022-01-25 01:50:54 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-01-25 01:50:54 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 01:51:31 +0100 <Axman6> one of the wierd things about foldl for me is that it accumulates these potetnially quite large state structures, which can never get smaller, even in cases where there's no useful information, and the composition of folds ends up having to unpack this extra state all the time
2022-01-25 01:52:15 +0100 <Axman6> I think the Done constructor in Step isn't needed actually
2022-01-25 01:52:46 +0100td_(~td@muedsl-82-207-238-055.citykom.de)
2022-01-25 01:53:12 +0100 <Axman6> so... I uess the step function really just becomes: (s -> a -> Either (Fold a b) s)
2022-01-25 01:54:41 +0100amk(~amk@109.255.169.126) (Ping timeout: 268 seconds)
2022-01-25 01:55:09 +0100 <EvanR> so you either continue folding using the same strategy and state, or you 'snap' and switch to an entirely new fold with potentially different state
2022-01-25 01:55:35 +0100amk(~amk@109.255.169.126)
2022-01-25 01:55:46 +0100 <Axman6> yep
2022-01-25 01:56:11 +0100 <EvanR> so at least that lets the state get smaller
2022-01-25 01:57:04 +0100 <Axman6> yeah exactly, the smaller state is encapsulated in the new Fold
2022-01-25 01:57:12 +0100 <Axman6> I shjould try writing this, I'm curious now
2022-01-25 01:57:19 +0100 <Axman6> I should try writing this, I'm curious now
2022-01-25 01:57:44 +0100tommd(~tommd@67-42-147-226.ptld.qwest.net)
2022-01-25 02:01:36 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2022-01-25 02:01:41 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2022-01-25 02:04:25 +0100jespada(~jespada@87.74.36.188) (Ping timeout: 256 seconds)
2022-01-25 02:08:15 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-25 02:08:23 +0100jespada(~jespada@87.74.36.188)
2022-01-25 02:08:28 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 02:08:28 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 02:08:28 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 02:09:01 +0100alx741(~alx741@157.100.93.160)
2022-01-25 02:11:40 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-01-25 02:12:21 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 02:17:21 +0100jackson99(~bc8147f2@cerf.good1.com)
2022-01-25 02:17:47 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-01-25 02:18:04 +0100shriekingnoise(~shrieking@201.231.16.156)
2022-01-25 02:22:47 +0100mvk(~mvk@2607:fea8:5cdc:bf00::a2bf)
2022-01-25 02:28:32 +0100notzmv(~zmv@user/notzmv)
2022-01-25 02:30:38 +0100alx741(~alx741@157.100.93.160)
2022-01-25 02:34:31 +0100justachejustGhost
2022-01-25 02:35:03 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 02:37:01 +0100imalsogreg(~imalsogre@2601:147:300:f930::b46b) (Remote host closed the connection)
2022-01-25 02:40:41 +0100 <Axman6> hmm, I found a problem with my plan
2022-01-25 02:42:07 +0100 <Axman6> In step 0 a = Left (Fold step0 (step0 x0 a) done0), step0 returns (Either (Fold a b) x) no just x so there might need to be some sort of recursive step function to handle the fact that a step can always return _another_ fold
2022-01-25 02:42:37 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-01-25 02:44:24 +0100 <Axman6> actually, I think this is ok...
2022-01-25 02:47:47 +0100 <Axman6> yeah I think I've made it work
2022-01-25 02:47:59 +0100 <Axman6> and importantly things aren't recursive
2022-01-25 02:48:45 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2022-01-25 02:51:03 +0100 <EvanR> meanwhile I've so far failed to do something like Printf but with a heterolist
2022-01-25 02:52:00 +0100 <EvanR> (printf carries a list of Strings around, and I'm trying to carry a list of whatevers)
2022-01-25 02:52:47 +0100SwarmCollective(~joseph@2603-6011-bc02-b600-b296-221b-2190-d11e.res6.spectrum.com) (Remote host closed the connection)
2022-01-25 02:53:10 +0100alx741(~alx741@157.100.93.160)
2022-01-25 02:53:10 +0100SwarmCollective(~joseph@2603-6011-bc02-b600-af23-4557-ff2b-bd76.res6.spectrum.com)
2022-01-25 02:53:11 +0100xsperry(~xs@user/xsperry) (Killed (NickServ (GHOST command used by asdfasf!~xs@cpe-188-129-71-242.dynamic.amis.hr)))
2022-01-25 02:53:21 +0100lispy(~lispy4@84.69.59.93)
2022-01-25 02:53:50 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-01-25 02:55:05 +0100burnsidesLlama(~burnsides@dhcp168-037.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-25 02:56:28 +0100lionhairdino(~jacoo@121.131.39.82)
2022-01-25 02:57:35 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-37-70-24-250-33.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-01-25 02:57:35 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 02:58:20 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-01-25 02:58:49 +0100 <Axman6> The Applicativer instance is pretty hairy...
2022-01-25 02:58:54 +0100 <Axman6> Applicative*
2022-01-25 02:59:43 +0100jackson98(~bc8147f2@cerf.good1.com)
2022-01-25 02:59:52 +0100imalsogreg(~imalsogre@2601:147:300:f930::b46b)
2022-01-25 03:00:17 +0100myShoggoth(~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 240 seconds)
2022-01-25 03:00:45 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 03:00:59 +0100xsperry(~xs@user/xsperry)
2022-01-25 03:04:02 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-139.dsl.bell.ca)
2022-01-25 03:04:05 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2022-01-25 03:04:15 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2022-01-25 03:05:26 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-01-25 03:07:20 +0100pieguy128_(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-188.dsl.bell.ca)
2022-01-25 03:08:28 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-139.dsl.bell.ca) (Ping timeout: 250 seconds)
2022-01-25 03:08:39 +0100EsoAlgo(~EsoAlgo@152.70.142.52) (Ping timeout: 256 seconds)
2022-01-25 03:10:08 +0100deadmarshal(~deadmarsh@95.38.230.223)
2022-01-25 03:12:59 +0100mmhat(~mmh@55d400c1.access.ecotel.net) (Ping timeout: 256 seconds)
2022-01-25 03:13:18 +0100 <EvanR> was looking at the code for Auto, which contains many constructors. What an Applicative instance
2022-01-25 03:13:32 +0100 <EvanR> near the end says "-- I give up!"
2022-01-25 03:14:20 +0100alx741(~alx741@157.100.93.160)
2022-01-25 03:14:53 +0100deadmarshal(~deadmarsh@95.38.230.223) (Ping timeout: 256 seconds)
2022-01-25 03:19:07 +0100lrngystdlted^(~lrngystdl@50-207-160-170-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2022-01-25 03:19:59 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-01-25 03:20:11 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-25 03:21:41 +0100neurocyte0917090(~neurocyte@user/neurocyte) (Ping timeout: 256 seconds)
2022-01-25 03:21:41 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 03:22:49 +0100xff0x(~xff0x@port-92-193-184-123.dynamic.as20676.net) (Ping timeout: 256 seconds)
2022-01-25 03:24:31 +0100xff0x(~xff0x@2001:1a81:53ac:af00:3dc0:eeb6:6533:2585)
2022-01-25 03:25:52 +0100mmhat(~mmh@55d411b0.access.ecotel.net)
2022-01-25 03:29:54 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-01-25 03:32:17 +0100mvk(~mvk@2607:fea8:5cdc:bf00::a2bf) (Ping timeout: 240 seconds)
2022-01-25 03:33:36 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 03:33:36 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-01-25 03:34:37 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 240 seconds)
2022-01-25 03:35:46 +0100tommd(~tommd@67-42-147-226.ptld.qwest.net) (Ping timeout: 250 seconds)
2022-01-25 03:36:41 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-01-25 03:37:38 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-01-25 03:38:27 +0100alx741(~alx741@157.100.93.160)
2022-01-25 03:39:37 +0100tabemann(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2022-01-25 03:39:39 +0100 <Axman6> Annoyingly I have ended with a (non-tail) recursive definition of (<*>) which probably defests the purpose of what I was trying to do, though with proper inlining, in the cases where recusions isn't possible, GHC should be able to remove the recursive cases.
2022-01-25 03:39:55 +0100 <jackdk> Axman6: rewrite in CPS, defunctionalise the continuation, keep going
2022-01-25 03:40:09 +0100 <jackdk> Axman6: https://www.youtube.com/watch?v=wppzFzzD4b8
2022-01-25 03:40:57 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 03:41:09 +0100tabemann(~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2022-01-25 03:45:07 +0100 <Axman6> https://paste.tomsmeding.com/XnGY0kN6 is what I have so far
2022-01-25 03:46:14 +0100 <Axman6> IS there a way to make -ddump-simpl output less noisy?
2022-01-25 03:47:28 +0100 <Axman6> CPS may be useful...
2022-01-25 03:49:38 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-01-25 03:50:02 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
2022-01-25 03:50:20 +0100mbuf(~Shakthi@122.173.231.124)
2022-01-25 03:50:41 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2022-01-25 03:53:28 +0100Jing(~hedgehog@240e:390:7c53:a7e1:b4c3:bc35:ccb7:fa58)
2022-01-25 03:55:57 +0100mmhat(~mmh@55d411b0.access.ecotel.net) (Ping timeout: 240 seconds)
2022-01-25 03:55:59 +0100califax-(~califax@user/califx)
2022-01-25 03:59:09 +0100alx741(~alx741@157.100.93.160)
2022-01-25 04:00:33 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-01-25 04:00:34 +0100califax-califax
2022-01-25 04:01:37 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 240 seconds)
2022-01-25 04:03:30 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 04:07:47 +0100razetime(~quassel@49.207.209.26)
2022-01-25 04:08:09 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-01-25 04:09:27 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-01-25 04:10:16 +0100mmhat(~mmh@55d41489.access.ecotel.net)
2022-01-25 04:13:10 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 04:13:56 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-25 04:15:36 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-01-25 04:15:36 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-01-25 04:15:36 +0100finn_elijaFinnElija
2022-01-25 04:15:54 +0100td_(~td@muedsl-82-207-238-055.citykom.de) (Ping timeout: 268 seconds)
2022-01-25 04:17:13 +0100td_(~td@muedsl-82-207-238-208.citykom.de)
2022-01-25 04:17:17 +0100vglfr(~vglfr@46.96.147.122) (Ping timeout: 240 seconds)
2022-01-25 04:19:53 +0100vglfr(~vglfr@46.96.147.122)
2022-01-25 04:20:19 +0100alx741(~alx741@157.100.93.160)
2022-01-25 04:23:09 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Remote host closed the connection)
2022-01-25 04:23:26 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 04:24:47 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 04:27:47 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 04:35:48 +0100myShoggoth(~myShoggot@97-120-67-120.ptld.qwest.net)
2022-01-25 04:39:53 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
2022-01-25 04:42:51 +0100alx741(~alx741@157.100.93.160)
2022-01-25 04:43:16 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 04:44:08 +0100 <lionhairdino> :/w
2022-01-25 04:47:22 +0100[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-01-25 04:47:37 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 04:50:37 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2022-01-25 04:51:11 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 04:52:27 +0100lionhairdino(~jacoo@121.131.39.82) (WeeChat 3.4)
2022-01-25 04:53:12 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-01-25 04:53:39 +0100lionhairdino(~jacoo@121.131.39.82)
2022-01-25 04:56:23 +0100jackson98(~bc8147f2@cerf.good1.com) (Quit: quit)
2022-01-25 04:56:28 +0100jackson99(~bc8147f2@cerf.good1.com) (Quit: quit)
2022-01-25 04:58:37 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2022-01-25 05:00:24 +0100xsperry(~xs@user/xsperry) ()
2022-01-25 05:00:24 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-01-25 05:00:49 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-01-25 05:01:25 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 05:09:28 +0100alx741(~alx741@157.100.93.160)
2022-01-25 05:13:42 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 05:13:52 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-01-25 05:19:20 +0100vysn(~vysn@user/vysn) (Ping timeout: 250 seconds)
2022-01-25 05:20:28 +0100tommd(~tommd@67-42-147-226.ptld.qwest.net)
2022-01-25 05:23:48 +0100Jing(~hedgehog@240e:390:7c53:a7e1:b4c3:bc35:ccb7:fa58) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-25 05:26:11 +0100lavaman(~lavaman@98.38.249.169)
2022-01-25 05:26:35 +0100 <EvanR> if something wants Proxy a, and I have an actual `a' on me, is there a slick way to get a proxy for it
2022-01-25 05:27:57 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-01-25 05:28:50 +0100mbuf(~Shakthi@122.173.231.124) (Read error: Connection reset by peer)
2022-01-25 05:30:17 +0100mbuf(~Shakthi@122.173.231.124)
2022-01-25 05:31:08 +0100 <Axman6> proxyFor :: a -> Proxy a; proxyFor = const Proxy
2022-01-25 05:32:00 +0100alx741(~alx741@157.100.93.160)
2022-01-25 05:32:05 +0100 <EvanR> gotta define this myself, got it
2022-01-25 05:33:33 +0100xsperry(~xs@user/xsperry)
2022-01-25 05:34:12 +0100 <ephemient> :t let a = "" `asProxyTypeOf` proxy; proxy = Proxy in proxy
2022-01-25 05:34:13 +0100 <lambdabot> error:
2022-01-25 05:34:13 +0100 <lambdabot> Variable not in scope: asProxyTypeOf :: [Char] -> Proxy t0 -> t1
2022-01-25 05:35:06 +0100 <ephemient> hmm that doesn't seem to work anyway, oh well
2022-01-25 05:35:21 +0100 <awpr> % let f Proxy = "" in f (pure True)
2022-01-25 05:35:21 +0100 <yahb> awpr: ""
2022-01-25 05:36:10 +0100 <monochrom> Oh! Smart. pure :: a -> Proxy a
2022-01-25 05:36:32 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 05:38:17 +0100 <EvanR> duuuuude
2022-01-25 05:39:00 +0100 <EvanR> "stupid applicative tricks"
2022-01-25 05:40:38 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 05:40:53 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 05:41:37 +0100imalsogreg(~imalsogre@2601:147:300:f930::b46b) (Remote host closed the connection)
2022-01-25 05:42:49 +0100 <ephemient> % pure @Proxy $! undefined
2022-01-25 05:42:49 +0100 <yahb> ephemient: Proxy
2022-01-25 05:43:31 +0100 <ephemient> % const Proxy $! undefined
2022-01-25 05:43:31 +0100 <yahb> ephemient: Proxy
2022-01-25 05:43:40 +0100 <ephemient> % const () $! undefined
2022-01-25 05:43:40 +0100 <yahb> ephemient: *** Exception: Prelude.undefined; CallStack (from HasCallStack):; error, called at libraries/base/GHC/Err.hs:75:14 in base:GHC.Err; undefined, called at <interactive>:54:13 in interactive:Ghci29
2022-01-25 05:43:48 +0100 <ephemient> huh.
2022-01-25 05:44:04 +0100 <awpr> oh, I think I see
2022-01-25 05:44:16 +0100 <awpr> % show (undefined :: Proxy Int)
2022-01-25 05:44:17 +0100 <yahb> awpr: "Proxy"
2022-01-25 05:44:47 +0100 <awpr> yeah, a lazy Show instance
2022-01-25 05:46:14 +0100 <EvanR> being strict here would be especially silly xd
2022-01-25 05:46:18 +0100 <ephemient> interesting. so show () forces while show Proxy doesn't
2022-01-25 05:46:45 +0100 <EvanR> fails due to missing value of which you should not have anyway!
2022-01-25 05:46:49 +0100 <EvanR> unlike ()
2022-01-25 05:47:44 +0100 <ephemient> you can have a value of type of Proxy
2022-01-25 05:47:54 +0100 <EvanR> forcing () for other purposes should work, even if in any case I can think of it could get away with returning a new () without doing any work
2022-01-25 05:49:11 +0100 <EvanR> () lets you manipulate the value system while Proxy lets you manipulate the typeclass system? xD
2022-01-25 05:50:25 +0100 <monochrom> I think () has "deriving Show" which is pretty strict.
2022-01-25 05:52:37 +0100lispy(~lispy4@84.69.59.93) (Quit: Leaving)
2022-01-25 05:53:01 +0100 <ephemient> > show (undefined :: (a, b))
2022-01-25 05:53:02 +0100 <lambdabot> "*Exception: Prelude.undefined
2022-01-25 05:53:09 +0100 <ephemient> I guess that's consistent with other tuples
2022-01-25 05:55:00 +0100 <ephemient> % show (undefined :: Solo a)
2022-01-25 05:55:00 +0100 <yahb> ephemient: ; <interactive>:56:20: error: Not in scope: type constructor or class `Solo'
2022-01-25 05:55:18 +0100 <ephemient> % show (undefined :: Data.Tuple.Solo a)
2022-01-25 05:55:18 +0100 <yahb> ephemient: ; <interactive>:57:20: error: Not in scope: type constructor or class `Data.Tuple.Solo'
2022-01-25 05:55:18 +0100tommd(~tommd@67-42-147-226.ptld.qwest.net) (Ping timeout: 250 seconds)
2022-01-25 05:58:37 +0100alx741(~alx741@157.100.93.160)
2022-01-25 05:58:50 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-01-25 06:00:21 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 256 seconds)
2022-01-25 06:00:26 +0100deadmarshal(~deadmarsh@95.38.230.223)
2022-01-25 06:01:06 +0100Jing(~hedgehog@240e:390:7c53:a7e1:54a1:8815:7a95:cd26)
2022-01-25 06:01:39 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
2022-01-25 06:03:16 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 06:04:17 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 06:12:05 +0100imalsogreg(~imalsogre@2601:147:300:f930::b46b)
2022-01-25 06:13:47 +0100cyphase(~cyphase@user/cyphase)
2022-01-25 06:18:43 +0100razetime(~quassel@49.207.209.26) (Read error: Connection reset by peer)
2022-01-25 06:21:23 +0100alx741(~alx741@157.100.93.160)
2022-01-25 06:26:11 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 06:29:59 +0100ardell(~ardell@user/ardell)
2022-01-25 06:32:19 +0100lispy(~lispy4@84.69.59.93)
2022-01-25 06:35:27 +0100lispy(~lispy4@84.69.59.93) (Client Quit)
2022-01-25 06:38:58 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-01-25 06:44:08 +0100alx741(~alx741@157.100.93.160)
2022-01-25 06:48:25 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 06:49:54 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
2022-01-25 06:54:17 +0100imalsogreg(~imalsogre@2601:147:300:f930::b46b) (Ping timeout: 240 seconds)
2022-01-25 06:56:18 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net)
2022-01-25 06:58:14 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 07:03:49 +0100deadmarshal(~deadmarsh@95.38.230.223) (Ping timeout: 256 seconds)
2022-01-25 07:05:31 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-25 07:06:40 +0100alx741(~alx741@157.100.93.160)
2022-01-25 07:08:00 +0100Akiva(~Akiva@user/Akiva)
2022-01-25 07:10:33 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-01-25 07:11:28 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 07:11:48 +0100deadmarshal(~deadmarsh@95.38.230.223)
2022-01-25 07:13:16 +0100michalz(~michalz@185.246.204.40)
2022-01-25 07:16:20 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Remote host closed the connection)
2022-01-25 07:16:28 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 07:18:45 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 07:19:05 +0100nightbreak(~nightbrea@victors-mbp.dyndns.rice.edu)
2022-01-25 07:19:37 +0100myShoggoth(~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 240 seconds)
2022-01-25 07:25:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-25 07:29:10 +0100alx741(~alx741@157.100.93.160)
2022-01-25 07:30:53 +0100nightbreak(~nightbrea@victors-mbp.dyndns.rice.edu) (Quit: Signing off for now...)
2022-01-25 07:34:21 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 07:34:21 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 07:34:21 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 07:38:03 +0100polezaivsani(~polezaivs@orangeshoelaces.net)
2022-01-25 07:38:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-25 07:38:57 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 07:43:29 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 256 seconds)
2022-01-25 07:47:24 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-01-25 07:51:25 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-01-25 07:53:35 +0100SummerSonw(~The_viole@203.77.49.232)
2022-01-25 07:54:37 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 07:55:57 +0100lionhairdino(~jacoo@121.131.39.82) (Ping timeout: 256 seconds)
2022-01-25 07:56:43 +0100alx741(~alx741@157.100.93.160)
2022-01-25 07:57:41 +0100motherfsck(~motherfsc@user/motherfsck) (Quit: quit)
2022-01-25 07:58:54 +0100dobblego(~dibblego@122-199-1-30.ip4.superloop.com)
2022-01-25 07:58:54 +0100dobblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2022-01-25 07:58:54 +0100dobblego(~dibblego@haskell/developer/dibblego)
2022-01-25 08:01:22 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 08:02:33 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds)
2022-01-25 08:02:33 +0100dobblegodibblego
2022-01-25 08:08:30 +0100motherfsck(~motherfsc@user/motherfsck)
2022-01-25 08:15:57 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2022-01-25 08:18:53 +0100_ht(~quassel@82-168-34-160.fixed.kpn.net)
2022-01-25 08:19:29 +0100alx741(~alx741@157.100.93.160)
2022-01-25 08:32:56 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-01-25 08:36:13 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 08:38:41 +0100shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-01-25 08:38:57 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-25 08:39:17 +0100MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-01-25 08:39:42 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 08:40:03 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 08:43:13 +0100dut(~dut@user/dut)
2022-01-25 08:44:46 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-01-25 08:46:26 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 08:46:53 +0100 <dminuoso> What's your bar for uploading something to hackage?
2022-01-25 08:47:27 +0100 <dminuoso> I have this module that would expose basic domain name parsing, a simple domain name pattern language and some simple matching primitives along - and I now need it in a secondary project.
2022-01-25 08:47:42 +0100 <dminuoso> And I cant help but wonder whether this is genuinely something worth putting on hackage.
2022-01-25 08:48:48 +0100 <dminuoso> In the past I would have simply put it inside a git repo and depended upon that, but it's a hassle to update these (since you would always have pinned commit hashes), and it brings a variety of other ergonomic issues.
2022-01-25 08:48:54 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 08:49:25 +0100Goodbye_Vincent(cyvahl@freakshells.net) (Quit: Ping timeout (120 seconds))
2022-01-25 08:49:43 +0100Goodbye_Vincent(~Goodbye_V@freakshells.net)
2022-01-25 08:49:56 +0100idnar(sid12240@debian/mithrandi) (Ping timeout: 245 seconds)
2022-01-25 08:50:07 +0100SrPx(sid108780@id-108780.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2022-01-25 08:50:07 +0100systemfault(sid267009@id-267009.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2022-01-25 08:50:07 +0100aarchi(sid486183@id-486183.uxbridge.irccloud.com) (Ping timeout: 250 seconds)
2022-01-25 08:50:11 +0100edmundnoble(sid229620@id-229620.helmsley.irccloud.com) (Ping timeout: 252 seconds)
2022-01-25 08:50:11 +0100mcfilib(sid302703@user/mcfilib) (Ping timeout: 252 seconds)
2022-01-25 08:50:11 +0100caasih(sid13241@id-13241.ilkley.irccloud.com) (Ping timeout: 252 seconds)
2022-01-25 08:50:21 +0100obviyus(sid415299@user/obviyus) (Ping timeout: 245 seconds)
2022-01-25 08:50:21 +0100edwardk(sid47016@haskell/developer/edwardk) (Ping timeout: 245 seconds)
2022-01-25 08:50:21 +0100jackdk(sid373013@cssa/jackdk) (Ping timeout: 245 seconds)
2022-01-25 08:50:44 +0100bbhoss(sid18216@id-18216.tinside.irccloud.com) (Ping timeout: 252 seconds)
2022-01-25 08:51:18 +0100edwardk(sid47016@haskell/developer/edwardk)
2022-01-25 08:51:18 +0100caasih(sid13241@id-13241.ilkley.irccloud.com)
2022-01-25 08:51:18 +0100mcfilib(sid302703@user/mcfilib)
2022-01-25 08:51:19 +0100jackdk(sid373013@cssa/jackdk)
2022-01-25 08:51:19 +0100bbhoss(sid18216@id-18216.tinside.irccloud.com)
2022-01-25 08:51:22 +0100aarchi(sid486183@id-486183.uxbridge.irccloud.com)
2022-01-25 08:51:32 +0100SrPx(sid108780@id-108780.uxbridge.irccloud.com)
2022-01-25 08:51:54 +0100catern(~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (Ping timeout: 260 seconds)
2022-01-25 08:52:01 +0100edmundnoble(sid229620@id-229620.helmsley.irccloud.com)
2022-01-25 08:52:23 +0100 <davean> dminuoso: Its probably worth it
2022-01-25 08:53:18 +0100systemfault(sid267009@id-267009.uxbridge.irccloud.com)
2022-01-25 08:53:20 +0100idnar(sid12240@debian/mithrandi)
2022-01-25 08:53:23 +0100obviyus(sid415299@user/obviyus)
2022-01-25 08:54:18 +0100alx741(~alx741@157.100.93.160)
2022-01-25 08:56:11 +0100 <[exa]> dminuoso: avoid giving it a overly generic name as people often do, then it's all okay I'd say
2022-01-25 08:56:51 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-01-25 08:56:55 +0100 <dminuoso> Overly generic in the sense of abstract? Or would you detest a dns-utils package?
2022-01-25 08:57:21 +0100cfricke(~cfricke@user/cfricke)
2022-01-25 08:57:31 +0100 <[exa]> domain-parser is wrong, simple-domain-name-patterns is better, except a bit long
2022-01-25 08:57:47 +0100 <dminuoso> domain-patterns is actually a nice fit. :)
2022-01-25 08:58:11 +0100 <[exa]> I wanted to avoid the effect where people call their package 'regex' and implement one completely inextensible view of regex, no idea if it has a name
2022-01-25 08:58:12 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 08:58:39 +0100[_](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-01-25 08:59:14 +0100 <[exa]> domain-patterns is okay I'd say, people who do the same in a different way have a lot of space to differentiate the name
2022-01-25 08:59:51 +0100mikoto-chan(~mikoto-ch@84.199.144.235)
2022-01-25 09:00:09 +0100 <[exa]> maybe domain-name-patterns even, to avoid math geeks who patternmatch function domains lol
2022-01-25 09:00:35 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-25 09:00:47 +0100ski. o O ( `integral-domain-patterns' )
2022-01-25 09:01:28 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 09:01:58 +0100 <[exa]> I didn't really want to open that box of ideas but here we go.
2022-01-25 09:03:53 +0100gehmehgeh(~user@user/gehmehgeh)
2022-01-25 09:05:01 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-01-25 09:06:02 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-01-25 09:06:16 +0100chele(~chele@user/chele)
2022-01-25 09:06:25 +0100alp(~alp@user/alp)
2022-01-25 09:08:06 +0100prasad(~user@c-73-170-49-136.hsd1.ca.comcast.net)
2022-01-25 09:09:17 +0100ensyde(~ensyde@2600:1700:2050:1040:505d:6d63:cb2e:fb52) (Ping timeout: 240 seconds)
2022-01-25 09:09:25 +0100Ram-Z(~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 256 seconds)
2022-01-25 09:09:26 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-01-25 09:15:00 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 09:15:56 +0100alx741(~alx741@157.100.93.160)
2022-01-25 09:16:40 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:cceb:625b:cb9d:590d) (Remote host closed the connection)
2022-01-25 09:16:57 +0100Major_Biscuit(~MajorBisc@c-001-017-008.client.tudelft.eduvpn.nl)
2022-01-25 09:17:42 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-25 09:18:17 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2022-01-25 09:19:25 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-01-25 09:19:50 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-01-25 09:20:16 +0100MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 250 seconds)
2022-01-25 09:20:17 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 09:22:05 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 09:28:22 +0100fendor(~fendor@91.141.44.222.wireless.dyn.drei.com)
2022-01-25 09:29:39 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-01-25 09:30:04 +0100 <mjrosenb> has anyone seen this before: https://gist.github.com/mjrosenb/b949e67f57ef80b6f3a4602f75eb9c83 ?
2022-01-25 09:32:01 +0100 <dminuoso> mjrosenb: https://github.com/NixOS/nixpkgs/issues/93446
2022-01-25 09:32:03 +0100 <dminuoso> Potentially related
2022-01-25 09:32:29 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-01-25 09:32:34 +0100dsrt^(~dsrt@50-207-160-170-static.hfc.comcastbusiness.net)
2022-01-25 09:33:15 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 09:34:03 +0100 <dminuoso> mjrosenb: What GHC version are you using?
2022-01-25 09:36:15 +0100deadmarshal(~deadmarsh@95.38.230.223) (Ping timeout: 256 seconds)
2022-01-25 09:37:03 +0100alx741(~alx741@157.100.93.160)
2022-01-25 09:37:08 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:7a00:67ce:f137:ad93)
2022-01-25 09:38:02 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-01-25 09:38:31 +0100 <mjrosenb> ghcjs 8.10
2022-01-25 09:39:46 +0100akegalj(~akegalj@141-136-204-193.dsl.iskon.hr)
2022-01-25 09:41:03 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Quit: Lost terminal)
2022-01-25 09:42:12 +0100analognoise(~analognoi@185.202.221.105) (Read error: Connection reset by peer)
2022-01-25 09:45:32 +0100 <dminuoso> mjrosenb: Ah!
2022-01-25 09:45:40 +0100 <dminuoso> mjrosenb: https://github.com/haskell-foundation/foundation/blob/master/foundation/foundation.cabal#L199
2022-01-25 09:45:41 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 09:45:47 +0100 <dminuoso> I think you're tripping into that cabal flag here.
2022-01-25 09:46:04 +0100 <dminuoso> That makes this package unbuildable, the rest is just strange diagnostic interaction between cabal and nix
2022-01-25 09:46:23 +0100 <dminuoso> Or rather, not the package is unbuildable but that particular component
2022-01-25 09:46:27 +0100 <dminuoso> Which is why you get the diagnostic:
2022-01-25 09:46:33 +0100 <dminuoso> Setup: No executables and no library found. Nothing to do.
2022-01-25 09:48:45 +0100machinedgod(~machinedg@24.105.81.50)
2022-01-25 09:49:48 +0100 <mjrosenb> it seems like that is saying that foundation itself isn't buildable on ghcjs
2022-01-25 09:49:48 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 09:50:05 +0100 <dminuoso> Yes.
2022-01-25 09:51:19 +0100 <mjrosenb> which seems kind of strange, since from what I can tell, there isn't much that would break
2022-01-25 09:51:56 +0100 <dminuoso> https://github.com/haskell-foundation/foundation/commit/e96a6d4b90ba416c6c7f2cc598d635f6e58d71ad
2022-01-25 09:51:58 +0100 <dminuoso> https://github.com/vincenthz/haskell-pkg-guidelines/blob/master/support.md
2022-01-25 09:52:12 +0100 <dminuoso> https://github.com/haskell-foundation/foundation/issues/486
2022-01-25 09:53:30 +0100 <dminuoso> If you think can build it, you can override this with overrideCabal
2022-01-25 09:53:35 +0100 <dminuoso> At your own peril. :)
2022-01-25 09:55:32 +0100 <dminuoso> Question: When two packages expose the same module, can I diambiguate the package in an import statement?
2022-01-25 09:55:37 +0100 <dminuoso> Im not seeing anything in the Haskell standard at least.
2022-01-25 09:56:00 +0100 <dminuoso> I recall there was some way to specify, is this some GHC extension?
2022-01-25 09:56:29 +0100 <jackdk> dminuoso: https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/package_qualified_imports.html… ?
2022-01-25 09:56:42 +0100 <dminuoso> jackdk: Thanks, thats it. :)
2022-01-25 09:56:52 +0100ubert1(~Thunderbi@p200300ecdf099416f339e1e74dd0e9e7.dip0.t-ipconnect.de)
2022-01-25 09:57:00 +0100 <mjrosenb> I'm also questioning why this is getting pulled in at all
2022-01-25 09:57:35 +0100 <mjrosenb> https://gist.github.com/mjrosenb/085708d232d3b16701371b561e1563ed
2022-01-25 09:57:57 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2022-01-25 09:59:47 +0100mc47(~mc47@xmonad/TheMC47)
2022-01-25 10:01:46 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Remote host closed the connection)
2022-01-25 10:02:07 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 10:02:07 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Remote host closed the connection)
2022-01-25 10:02:13 +0100michalz(~michalz@185.246.204.40) (Ping timeout: 240 seconds)
2022-01-25 10:02:16 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 10:02:20 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Remote host closed the connection)
2022-01-25 10:02:41 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 10:02:43 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Remote host closed the connection)
2022-01-25 10:02:54 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 10:02:55 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Read error: Connection reset by peer)
2022-01-25 10:04:10 +0100wmacmil(~wmacmil@83-233-165-97.cust.bredband2.com)
2022-01-25 10:04:37 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
2022-01-25 10:04:41 +0100 <wmacmil> are there any blog posts/resources roughly about "python for haskell programmers"?
2022-01-25 10:05:09 +0100SummerSonw(~The_viole@203.77.49.232) (Ping timeout: 256 seconds)
2022-01-25 10:05:52 +0100 <wmacmil> like what are indensible resources to learning/using python if you're used to haskell : i see that typing and dataclasses modules seem to be haskelly, but is there a general way to approach the transition
2022-01-25 10:06:20 +0100 <dminuoso> wmacmil: Not that I have seem
2022-01-25 10:06:24 +0100 <dminuoso> It's an unusual transition
2022-01-25 10:06:33 +0100 <wmacmil> indeed, an unfortunate one too
2022-01-25 10:06:34 +0100 <mjrosenb> ahhh, memory depends on foundation for testing.
2022-01-25 10:06:41 +0100 <dminuoso> mjrosenb: Ah yes
2022-01-25 10:07:10 +0100 <dminuoso> mjrosenb: Then you can avoid it by lib.dontCheck
2022-01-25 10:07:14 +0100 <dminuoso> Probably should go upstream
2022-01-25 10:07:34 +0100alx741(~alx741@157.100.93.160)
2022-01-25 10:08:17 +0100 <mjrosenb> I know I've used lib.dontCheck before, but have completely forgotten how it is supposed to be used.
2022-01-25 10:08:34 +0100 <dminuoso> mjrosenb: Depends on the ergonomics of what you're doing.
2022-01-25 10:09:03 +0100 <dminuoso> See https://github.com/NixOS/nixpkgs/issues/26561
2022-01-25 10:09:05 +0100 <mjrosenb> I'm ok turning off tests entirely within this project.
2022-01-25 10:09:26 +0100 <dminuoso> But essentially you want to have an overlay that fixes this inside haskellPackages
2022-01-25 10:09:29 +0100 <dminuoso> mjrosenb: That wont work
2022-01-25 10:09:37 +0100 <dminuoso> You have to do this for this component
2022-01-25 10:09:56 +0100michalz(~michalz@185.246.204.58)
2022-01-25 10:11:03 +0100Jing(~hedgehog@240e:390:7c53:a7e1:54a1:8815:7a95:cd26) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-25 10:11:11 +0100 <dminuoso> mjrosenb: Anyway, you want to use either `haskellPackages.extend` or `haskellPackages.override` inside an overlay for your nixpkgs.
2022-01-25 10:11:21 +0100 <dminuoso> And inside those you do something like:
2022-01-25 10:11:45 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 10:11:57 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-01-25 10:12:20 +0100 <dminuoso> let extendedPkgs = pkgs.extend (self: super: { haskellPackages = super.haskellPackages.override (lib: { overrides = (selfHS: superHS: { memory = lib.dontCheck superHS.memory; })})})
2022-01-25 10:12:30 +0100 <dminuoso> Or rather
2022-01-25 10:13:06 +0100 <dminuoso> let extendedPkgs = pkgs.extend (self: super: { haskellPackages = super.haskellPackages.override (lib: { overrides = (selfHS: superHS: { yourPackage = superHS.callCabal2nix "foo" ./foo {}; memory = lib.dontCheck superHS.memory; })})}) in extendedPkgs.yourPackage
2022-01-25 10:13:11 +0100 <dminuoso> Might be some typos in there.
2022-01-25 10:13:31 +0100cynomys(~cynomys@user/cynomys) (Remote host closed the connection)
2022-01-25 10:13:34 +0100 <mjrosenb> hrm, I'm currently using extend
2022-01-25 10:13:34 +0100 <dminuoso> Alternatively you can move the memory fix into some regular overlay for your nixpkgs
2022-01-25 10:13:45 +0100 <dminuoso> mjrosenb: Be sure to give https://github.com/NixOS/nixpkgs/issues/26561 a read
2022-01-25 10:13:48 +0100 <mjrosenb> I may be able to make this work.
2022-01-25 10:14:12 +0100 <mjrosenb> I did. I suspect I'll be consulting it again before I get this working :-)
2022-01-25 10:14:16 +0100 <dminuoso> Heh :)
2022-01-25 10:14:43 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-25 10:16:00 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-01-25 10:17:04 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:cceb:625b:cb9d:590d)
2022-01-25 10:17:04 +0100 <mjrosenb> how do I get lib?
2022-01-25 10:17:40 +0100 <mjrosenb> ahh, it is bound in a lambda.
2022-01-25 10:17:44 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-01-25 10:17:44 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2022-01-25 10:17:47 +0100allbery_bgeekosaur
2022-01-25 10:18:41 +0100Jing(~hedgehog@240e:390:7c53:a7e1:e5fb:7a43:8199:8861)
2022-01-25 10:18:58 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506)
2022-01-25 10:20:15 +0100yassernasc(~yassernas@2804:29b8:505a:f33d:601e:b34d:f58c:b5e8)
2022-01-25 10:20:28 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 10:21:32 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:cceb:625b:cb9d:590d) (Ping timeout: 240 seconds)
2022-01-25 10:21:33 +0100vysn(~vysn@user/vysn)
2022-01-25 10:23:23 +0100Ram-Z(~Ram-Z@li1814-254.members.linode.com)
2022-01-25 10:28:45 +0100deadmarshal(~deadmarsh@95.38.230.223)
2022-01-25 10:30:19 +0100alx741(~alx741@157.100.93.160)
2022-01-25 10:33:52 +0100m4lvin(~m4lvin@w4eg.de) (Quit: m4lvin)
2022-01-25 10:34:18 +0100m4lvin(~m4lvin@w4eg.de)
2022-01-25 10:37:00 +0100Guest52(~Guest52@80-100-97-100.ip.xs4all.nl)
2022-01-25 10:38:03 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 10:38:09 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 10:41:19 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2022-01-25 10:41:40 +0100 <mjrosenb> bummer.
2022-01-25 10:41:41 +0100 <mjrosenb> ghcjs = super.haskell.packages.ghcjs.override {
2022-01-25 10:41:42 +0100 <mjrosenb> overrides = import ./haskell/packages/ghcjs options self;
2022-01-25 10:41:43 +0100 <mjrosenb> };
2022-01-25 10:41:46 +0100synthmeat(~synthmeat@user/synthmeat) (Quit: WeeChat 3.0)
2022-01-25 10:43:03 +0100 <mjrosenb> is where I'm pulling it from, so it looks like `override` was already used once, whic I believe means I can't extend ghcjs to fix memory?
2022-01-25 10:43:55 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-25 10:45:49 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-01-25 10:46:45 +0100 <jackdk> https://www.irccloud.com/pastebin/ukRt6y2O/shell.nix mjrosenb I don't have time to dig in and help, I'm sorry, but here's an example of replacing and reconfiguring a bunch of haskell packages I wrote for someone else at one point. Note the doJailbreak call - you can use dontCheck in the same way
2022-01-25 10:55:48 +0100alx741(~alx741@157.100.93.160)
2022-01-25 10:58:51 +0100 <mjrosenb> jackdk: thanks, I think the issues I'm having at this point are with the upstream nixexpr
2022-01-25 11:00:42 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 11:00:50 +0100catern(~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407)
2022-01-25 11:05:46 +0100nunggu(~q@user/nunggu) (Remote host closed the connection)
2022-01-25 11:06:16 +0100nunggu(~q@user/nunggu)
2022-01-25 11:11:50 +0100haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-01-25 11:12:49 +0100 <dminuoso> mjrosenb: That's the beauty of these overrides, you dont need to extend ghcjs
2022-01-25 11:12:58 +0100 <dminuoso> mjrosenb: Roughly you'd do:
2022-01-25 11:13:10 +0100 <dminuoso> uh
2022-01-25 11:13:15 +0100 <dminuoso> mjrosenb: Can you share the entirety of that nix expression?
2022-01-25 11:17:07 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
2022-01-25 11:18:20 +0100alx741(~alx741@157.100.93.160)
2022-01-25 11:19:00 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-01-25 11:19:57 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 276 seconds)
2022-01-25 11:20:08 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-01-25 11:20:16 +0100rusrushal13(~rusrushal@2409:4056:e95:fe3c:29c9:f5b0:286b:2495)
2022-01-25 11:20:43 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2022-01-25 11:21:24 +0100nunggu(~q@user/nunggu) (Remote host closed the connection)
2022-01-25 11:21:48 +0100nunggu(~q@user/nunggu)
2022-01-25 11:23:21 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 256 seconds)
2022-01-25 11:27:57 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 11:29:02 +0100synthmeat(~synthmeat@user/synthmeat)
2022-01-25 11:30:40 +0100romesrf(~romes@bl8-111-202.dsl.telepac.pt)
2022-01-25 11:30:48 +0100 <romesrf> hey everyone
2022-01-25 11:31:02 +0100MasseR4(~MasseR@51.15.143.128) (Quit: The Lounge - https://thelounge.chat)
2022-01-25 11:31:10 +0100 <romesrf> if f :: a -> m a, how would you rewrite this without the do notation: mapM (\(ref, rec) -> do rec' <- updateRecord rec; return (ref, rec')) records
2022-01-25 11:31:21 +0100 <romesrf> sorry, replace updateRecord with f*
2022-01-25 11:31:31 +0100MasseR4(~MasseR@51.15.143.128)
2022-01-25 11:31:56 +0100 <[exa]> you can always resort to >>= and more lambdas (basically expand the `do`)
2022-01-25 11:32:28 +0100xff0x(~xff0x@2001:1a81:53ac:af00:3dc0:eeb6:6533:2585) (Remote host closed the connection)
2022-01-25 11:32:29 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-25 11:32:32 +0100 <romesrf> right :), that's probably best than whatever way i can get rid of bind (>>=) right
2022-01-25 11:32:45 +0100xff0x(~xff0x@2001:1a81:53ac:af00:4616:9444:a1c8:27cf)
2022-01-25 11:32:59 +0100 <[exa]> @undo do {rec' <- updateRecord rec; return (ref, rec'); }
2022-01-25 11:32:59 +0100 <lambdabot> updateRecord rec >>= \ rec' -> return (ref, rec')
2022-01-25 11:33:07 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-25 11:33:28 +0100 <romesrf> cool cool
2022-01-25 11:33:36 +0100 <romesrf> how would you go about not using bind?
2022-01-25 11:33:38 +0100SummerSonw(~The_viole@203.77.49.232)
2022-01-25 11:33:51 +0100 <dminuoso> romesrf: https://gist.github.com/dminuoso/a42206fdd79b79ab73dc2eccc8f6bc53
2022-01-25 11:34:02 +0100 <[exa]> you may fmap the (ref,) inside the monad
2022-01-25 11:34:09 +0100 <romesrf> nice!
2022-01-25 11:34:24 +0100 <dminuoso> Also, traverse looks nicer than mapM :)
2022-01-25 11:34:29 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 11:34:35 +0100 <[exa]> ah yes there we go :]
2022-01-25 11:34:52 +0100 <dminuoso> romesrf: Note that this needs the extension TupleSections enabled.
2022-01-25 11:35:00 +0100 <romesrf> got it :)
2022-01-25 11:35:36 +0100 <dminuoso> romesrf: Also, if you insist on writing it densly, you can also use for
2022-01-25 11:35:38 +0100 <romesrf> dminuoso: traverse vs mapM?
2022-01-25 11:36:04 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-01-25 11:36:04 +0100 <romesrf> dminuoso: i do enjoy the dense notation, if i could learn to get rid of the lambda here it would be even cooler hahahaha
2022-01-25 11:36:14 +0100 <dminuoso> romesrf: https://gist.github.com/dminuoso/a42206fdd79b79ab73dc2eccc8f6bc53
2022-01-25 11:36:23 +0100 <dminuoso> I would probably opt for the second
2022-01-25 11:36:52 +0100wmacmil(~wmacmil@83-233-165-97.cust.bredband2.com) (Quit: Leaving)
2022-01-25 11:37:42 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
2022-01-25 11:38:10 +0100 <romesrf> I see so :) but i was wondering why traverse over mapM (is it because mapM is specific for [] in the base?)
2022-01-25 11:38:18 +0100__monty__(~toonn@user/toonn)
2022-01-25 11:38:26 +0100 <romesrf> while traverse is over any traversable?
2022-01-25 11:38:35 +0100 <[exa]> romesrf: mapM is basically traverse that _requires_ that the type there is monad
2022-01-25 11:38:39 +0100 <dminuoso> mapM is arbitrarily constrained to Monad rather than Applicative
2022-01-25 11:38:45 +0100 <romesrf> understood!
2022-01-25 11:38:56 +0100 <dminuoso> but also because I have a certain mind model of Traversable
2022-01-25 11:38:56 +0100 <[exa]> usually that's not required at all (certainly not required for functionality of mapM)
2022-01-25 11:39:07 +0100 <dminuoso> So I like seeing the word `traverse` since it makes me think of traversables
2022-01-25 11:39:14 +0100 <dminuoso> The word `map` just triggers `Functor` in my mind.
2022-01-25 11:39:22 +0100 <romesrf> thank you, then I will use `traverse` because you have indeed convinced me haha
2022-01-25 11:39:51 +0100 <dminuoso> Also on the off chance that mapM will be removed someday, you have one fix less for future GHCs.
2022-01-25 11:40:11 +0100 <dminuoso> (Its removal was discussed but forgotten a while ago)
2022-01-25 11:41:04 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-01-25 11:45:52 +0100alx741(~alx741@157.100.93.160)
2022-01-25 11:46:10 +0100jakalx(~jakalx@base.jakalx.net)
2022-01-25 11:47:09 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-01-25 11:47:18 +0100lechner(~lechner@debian/lechner) (Ping timeout: 268 seconds)
2022-01-25 11:48:17 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-01-25 11:48:27 +0100Lord_of_Life_Lord_of_Life
2022-01-25 11:48:49 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-25 11:49:31 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 11:53:38 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2022-01-25 11:55:20 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-01-25 11:55:24 +0100 <dminuoso> Im writing a package and I want an instance whose presence conditionally depends on a cabal flag.
2022-01-25 11:55:42 +0100 <dminuoso> Is there a way to induce a CPP macro in the cabal package guarded by a flag?
2022-01-25 11:56:08 +0100 <dminuoso> Background is for development purposes it'd be nice to have a morally wrong and bug inducing Read instance
2022-01-25 11:56:14 +0100 <geekosaur> gcc-options: -D... ?
2022-01-25 11:56:23 +0100 <dminuoso> geekosaur: Ah, I see.
2022-01-25 11:56:27 +0100 <dminuoso> Thanks
2022-01-25 11:59:08 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-01-25 11:59:20 +0100 <lortabac> dminuoso: maybe you can put the instance to a separate module to avoid CCP
2022-01-25 11:59:27 +0100 <lortabac> CPP
2022-01-25 11:59:58 +0100 <mjrosenb> dminuoso: I don't know enough about miso, and miso's nix tree to know why it is pulling in a library that it shouldn't.
2022-01-25 12:00:31 +0100 <dminuoso> lortabac: Mmm, unsafe orphan instances?
2022-01-25 12:00:50 +0100 <dminuoso> That has more bug potential if this library was used inside yet another library
2022-01-25 12:01:04 +0100 <dminuoso> That I can definitely see leading to incoherence
2022-01-25 12:01:56 +0100 <mjrosenb> dminuoso: https://gist.github.com/mjrosenb/c319971baa1a48b02fe647c7d740caf5
2022-01-25 12:01:57 +0100 <lortabac> dminuoso: you can load that module conditionally through a cabal flag
2022-01-25 12:02:07 +0100 <geekosaur> doesn't seem much worse to me than putting it in the same module, you'd just be conditionally including the orphans module instead of conditonally including code
2022-01-25 12:02:51 +0100 <lortabac> it's not worse but it can be inconvenient if your formatter doesn't support CPP or something like that
2022-01-25 12:04:58 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-01-25 12:06:32 +0100geranim0(~geranim0@d-132-204-221-88.res.umontreal.ca) (Ping timeout: 240 seconds)
2022-01-25 12:07:29 +0100alx741(~alx741@157.100.93.160)
2022-01-25 12:09:49 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 240 seconds)
2022-01-25 12:16:01 +0100lionhairdino(~jacoo@121.131.39.82)
2022-01-25 12:16:23 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 12:21:24 +0100Guest52(~Guest52@80-100-97-100.ip.xs4all.nl) (Ping timeout: 250 seconds)
2022-01-25 12:25:44 +0100deadmarshal(~deadmarsh@95.38.230.223) (Ping timeout: 250 seconds)
2022-01-25 12:28:37 +0100romesrf(~romes@bl8-111-202.dsl.telepac.pt) (Ping timeout: 240 seconds)
2022-01-25 12:29:40 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 12:29:42 +0100lavaman(~lavaman@98.38.249.169)
2022-01-25 12:30:25 +0100yassernasc(~yassernas@2804:29b8:505a:f33d:601e:b34d:f58c:b5e8) (Remote host closed the connection)
2022-01-25 12:32:26 +0100ksqsf(~user@2001:da8:d800:602:8943:50ae:a41b:213e)
2022-01-25 12:33:49 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-01-25 12:33:57 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-01-25 12:34:06 +0100alx741(~alx741@157.100.93.160)
2022-01-25 12:35:24 +0100hololeap(~hololeap@user/hololeap)
2022-01-25 12:45:59 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 12:45:59 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 12:45:59 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 12:48:12 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 12:51:26 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-01-25 12:55:25 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-25 13:00:27 +0100zer0bitz(~zer0bitz@2001:2003:f444:a000:2055:673d:3155:da63)
2022-01-25 13:05:24 +0100burnsidesLlama(~burnsides@dhcp168-025.wadham.ox.ac.uk)
2022-01-25 13:05:37 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2022-01-25 13:06:39 +0100alx741(~alx741@157.100.93.160)
2022-01-25 13:11:31 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-01-25 13:13:02 +0100zaquest(~notzaques@5.130.79.72)
2022-01-25 13:13:49 +0100 <__monty__> Does anyone have some experience with SBV? I'm having a hard time figuring out how to refer to previously introduced variables. `sInteger` with the same string introduces a new variable with an appropriate suffix. https://hackage.haskell.org/package/sbv-8.17
2022-01-25 13:14:36 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 13:15:38 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 13:15:53 +0100ardell(~ardell@user/ardell) (Quit: Konversation terminated!)
2022-01-25 13:20:28 +0100thevishy(~Nishant@2405:201:f005:c007:39ad:8b3b:de67:f2a2)
2022-01-25 13:22:55 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net) (Ping timeout: 256 seconds)
2022-01-25 13:23:08 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-01-25 13:23:58 +0100chele_(~chele@user/chele)
2022-01-25 13:25:58 +0100chele(~chele@user/chele) (Ping timeout: 250 seconds)
2022-01-25 13:26:07 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 13:27:16 +0100haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 250 seconds)
2022-01-25 13:28:13 +0100 <tomsmeding> __monty__: no idea, but aren't you supposed to use this instance? https://hackage.haskell.org/package/sbv-8.17/docs/src/Data.SBV.Core.Model.html#line-1345
2022-01-25 13:29:00 +0100chele__(~chele@user/chele)
2022-01-25 13:31:25 +0100chele_(~chele@user/chele) (Ping timeout: 256 seconds)
2022-01-25 13:31:30 +0100 <dminuoso> Gah, Im slowly beginning to feel the pain of attoparsec. This backtracking is completely impeding my ability to produce legible diagnostics.
2022-01-25 13:31:31 +0100alp(~alp@user/alp) (Ping timeout: 268 seconds)
2022-01-25 13:31:57 +0100 <dminuoso> As soon as you have some `many` outside, you turn all errors into no endOfInput errors.
2022-01-25 13:32:19 +0100 <dminuoso> Maybe I should just bite the bullet and switch to megaparsec. :(
2022-01-25 13:32:58 +0100vglfr(~vglfr@46.96.147.122) (Read error: Connection reset by peer)
2022-01-25 13:33:18 +0100alx741(~alx741@157.100.93.160)
2022-01-25 13:33:59 +0100vglfr(~vglfr@46.96.147.122)
2022-01-25 13:35:20 +0100 <__monty__> tomsmeding: Yes. And it's all pretty nice if you have the full model specification in one do-block. But I'm building the model up incrementally so I need a way to refer to previously defined symbolic variables.
2022-01-25 13:36:50 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 13:36:57 +0100 <__monty__> dminuoso: If you do some comparative benchmarks and a usability report, i.e., are the error reporting features worth the performance impact (if there is one), would be awesome : )
2022-01-25 13:37:32 +0100 <geekosaur> would be interesting. last time I checked the megaparsec folks were claiming to have caught up with attoparsec
2022-01-25 13:37:35 +0100 <tomsmeding> __monty__: have you tried just storing the 'SBV Integer' somewhere?
2022-01-25 13:40:08 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-01-25 13:40:32 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 240 seconds)
2022-01-25 13:40:51 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net)
2022-01-25 13:43:54 +0100alp(~alp@user/alp)
2022-01-25 13:45:37 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 13:46:37 +0100chele__chele
2022-01-25 13:46:45 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net) (Remote host closed the connection)
2022-01-25 13:46:58 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 13:49:37 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-01-25 13:50:41 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-01-25 13:50:54 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-01-25 13:51:11 +0100 <dminuoso> geekosaur: My previous with megaparsec was that the ruthless use of INLINE pragmas on almost every binding was that in degenerate cases the simplifier would spend 2 minutes for a single function...
2022-01-25 13:51:46 +0100 <dminuoso> Which was quite painful for my use case, since based on the use style at the time it blew up compilation time of our package from a minute to about 15.
2022-01-25 13:52:08 +0100 <dminuoso> Not that this is relevant here, but it didn't leave me quite convinced about the internal quality
2022-01-25 13:53:30 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-01-25 13:53:33 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2022-01-25 13:53:43 +0100 <dminuoso> Perhaps the only way megaparsec can be made performant, is by ensuring GHC sees the entire transitively used code in a single compilation unit?
2022-01-25 13:54:54 +0100alx741(~alx741@157.100.93.160)
2022-01-25 13:58:02 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 268 seconds)
2022-01-25 13:58:02 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 13:58:50 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-01-25 14:03:03 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-01-25 14:04:46 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 14:06:17 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 14:06:37 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 14:06:42 +0100ksqsf(~user@2001:da8:d800:602:8943:50ae:a41b:213e) (Ping timeout: 250 seconds)
2022-01-25 14:07:32 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2022-01-25 14:10:57 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Ping timeout: 240 seconds)
2022-01-25 14:11:03 +0100fendor_(~fendor@77.119.167.8.wireless.dyn.drei.com)
2022-01-25 14:11:03 +0100burnsidesLlama(~burnsides@dhcp168-025.wadham.ox.ac.uk) (Remote host closed the connection)
2022-01-25 14:11:36 +0100burnsidesLlama(~burnsides@client-8-74.eduroam.oxuni.org.uk)
2022-01-25 14:13:17 +0100Henson(~kvirc@107-179-133-201.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2022-01-25 14:13:55 +0100fendor(~fendor@91.141.44.222.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
2022-01-25 14:15:25 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-01-25 14:15:32 +0100burnsidesLlama(~burnsides@client-8-74.eduroam.oxuni.org.uk) (Ping timeout: 240 seconds)
2022-01-25 14:16:44 +0100mmhat(~mmh@55d41489.access.ecotel.net) (Quit: WeeChat 3.4)
2022-01-25 14:16:44 +0100alx741(~alx741@157.100.93.160)
2022-01-25 14:19:47 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 14:19:47 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 14:19:55 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2022-01-25 14:20:53 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba)
2022-01-25 14:22:13 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 240 seconds)
2022-01-25 14:22:13 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
2022-01-25 14:25:02 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba) (Ping timeout: 240 seconds)
2022-01-25 14:25:41 +0100 <mcgroin> what is that tild? fmap (\ ~(a, s') -> (f a, s')) $ runStateT m s
2022-01-25 14:25:47 +0100geranim0(~geranim0@d-132-204-221-88.res.umontreal.ca)
2022-01-25 14:25:50 +0100 <dminuoso> mcgroin: It's a irrefutable pattern.
2022-01-25 14:26:00 +0100 <dminuoso> Sometimes inaccurately called a lazy pattern
2022-01-25 14:26:19 +0100 <mcgroin> ok let me check
2022-01-25 14:28:07 +0100slack1256(~slack1256@191.126.99.75)
2022-01-25 14:28:45 +0100 <dminuoso> % case True of ~False -> 1 -- mcgroin
2022-01-25 14:28:45 +0100 <yahb> dminuoso: 1
2022-01-25 14:29:13 +0100deadmarshal(~deadmarsh@95.38.230.223)
2022-01-25 14:29:25 +0100 <geekosaur> "Matching the pattern ~apat against a value v always succeeds. The free variables in apat are bound to the appropriate values if matching apat against v would otherwise succeed, and to βŠ₯ if matching apat against v fails or diverges. (Binding does not imply evaluation.)" (https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-580003.17)
2022-01-25 14:30:02 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-01-25 14:30:07 +0100Henson(~kvirc@107-179-133-201.cpe.teksavvy.com)
2022-01-25 14:32:45 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-01-25 14:36:28 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 14:36:47 +0100alx741(~alx741@157.100.93.160)
2022-01-25 14:39:51 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 14:43:00 +0100o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-01-25 14:45:21 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-01-25 14:48:30 +0100lavaman(~lavaman@98.38.249.169)
2022-01-25 14:52:32 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-01-25 14:55:13 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Remote host closed the connection)
2022-01-25 14:57:01 +0100alx741(~alx741@157.100.93.160)
2022-01-25 14:57:02 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-01-25 14:59:54 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 15:03:13 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2022-01-25 15:03:47 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 15:04:21 +0100polezaivsani(~polezaivs@orangeshoelaces.net) (Ping timeout: 250 seconds)
2022-01-25 15:05:08 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-01-25 15:06:14 +0100 <janus> do all of you think it would be a good idea to have an official deprecation notice for libraries maintained by hvr? because i'd like to point people to something official such that the last packages can be moved off of hslogger/MissingH/cryptohash
2022-01-25 15:07:07 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-01-25 15:07:25 +0100xff0x(~xff0x@2001:1a81:53ac:af00:4616:9444:a1c8:27cf) (Ping timeout: 240 seconds)
2022-01-25 15:08:53 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-01-25 15:09:50 +0100 <geekosaur> janus, talk to the HF first, I believe there are already plans to get tose moved to new maintainers
2022-01-25 15:10:01 +0100 <geekosaur> sorry, to the CLC I think
2022-01-25 15:10:03 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
2022-01-25 15:10:10 +0100 <maerwald> that's not a HF matter
2022-01-25 15:10:57 +0100 <maerwald> there's no such thing as an official deprecation notice... either take over the package or fork it
2022-01-25 15:11:06 +0100 <maerwald> for taking over packages contact trustees
2022-01-25 15:11:26 +0100 <maerwald> CLC is not involved in maintaining anything outside of base
2022-01-25 15:12:33 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-01-25 15:13:07 +0100 <janus> but i want these packages to die, nobody is interested in maintaining them. there are already alternatives.
2022-01-25 15:13:31 +0100 <janus> hvr took these over from John Goerzen anyway, they have been on life support for years
2022-01-25 15:14:47 +0100 <maerwald> that's not how hackage works
2022-01-25 15:15:13 +0100 <janus> what is not how hackage works? you mean packages are never deprecated?
2022-01-25 15:15:26 +0100 <maerwald> you can take over the package and put a deprecation notice yourself, I guess...
2022-01-25 15:15:40 +0100 <maerwald> that also goes via trustees
2022-01-25 15:15:54 +0100 <maerwald> and that intention should probably be communicated
2022-01-25 15:16:27 +0100 <geekosaur> looks like I misremembered anyway, wasn't hvr's packages. https://mail.haskell.org/pipermail/libraries/2022-January/031582.html
2022-01-25 15:16:50 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-01-25 15:17:01 +0100 <dminuoso> What happened to hvr?
2022-01-25 15:17:21 +0100 <janus> geekosaur: cryptonite/memory is a very different case since Vincent has claimed he is actually working on GHC 9.2 support
2022-01-25 15:17:27 +0100ec(~ec@gateway/tor-sasl/ec)
2022-01-25 15:17:30 +0100alx741(~alx741@157.100.93.160)
2022-01-25 15:17:33 +0100 <geekosaur> I have no clue, but he's been absent for close to a year now
2022-01-25 15:17:42 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 15:17:42 +0100 <maerwald> geekosaur: Vincent replied to that and not very amused
2022-01-25 15:17:54 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 15:18:42 +0100noctuxkuyatzu
2022-01-25 15:18:59 +0100kuyatzunoctux
2022-01-25 15:20:09 +0100 <geekosaur> not even updating his ghc ppa
2022-01-25 15:20:22 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 15:21:32 +0100mikoto-chan(~mikoto-ch@84.199.144.235) (Ping timeout: 240 seconds)
2022-01-25 15:24:42 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 15:25:14 +0100 <maerwald> it would probably be interesting to have something like a CRC (crypto committee), but you'd have to find competent people first
2022-01-25 15:26:51 +0100 <geekosaur> probably stakeholders
2022-01-25 15:27:13 +0100 <maerwald> huh?
2022-01-25 15:27:38 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-01-25 15:27:47 +0100slac63614(~slack1256@186.11.82.162)
2022-01-25 15:28:03 +0100xff0x(~xff0x@2001:1a81:53ac:af00:4616:9444:a1c8:27cf)
2022-01-25 15:29:22 +0100 <maerwald> I mean people who actually know something about crypto
2022-01-25 15:29:54 +0100slack1256(~slack1256@191.126.99.75) (Ping timeout: 250 seconds)
2022-01-25 15:30:32 +0100 <maerwald> not "I had a course back in uni" :p
2022-01-25 15:31:13 +0100fef(~thedawn@user/thedawn)
2022-01-25 15:31:53 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 15:31:53 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 15:31:53 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 15:33:29 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 15:36:37 +0100alx741(~alx741@157.100.93.160)
2022-01-25 15:37:42 +0100 <janus> seems to me like most of the cryptocurrency people (they ought to know about cryptography, no?) make their own bindings
2022-01-25 15:37:50 +0100 <janus> for example secp256k1 bindings: https://github.com/ElementsProject/simplicity/blob/master/Haskell/Core/Simplicity/LibSecp256k1/FFI…
2022-01-25 15:38:13 +0100 <dminuoso> I wish we'd just abolish cryptonite and get back to openssl bindings. :(
2022-01-25 15:38:27 +0100bjourne(~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5)
2022-01-25 15:38:36 +0100 <maerwald> dminuoso: well, linking openssl into your binary is a pita
2022-01-25 15:38:49 +0100 <maerwald> feel free to create mbedTLS bindings
2022-01-25 15:39:17 +0100 <dminuoso> Sure, but just like I'd wish for for a trip to the ISS one day, one can dream no?
2022-01-25 15:39:33 +0100 <maerwald> it's cold up there I think
2022-01-25 15:40:25 +0100 <bjourne> can you get cabal to install packages system-wide?
2022-01-25 15:40:33 +0100 <maerwald> bjourne: v1-install
2022-01-25 15:40:34 +0100 <dminuoso> bjourne: Yes and no.
2022-01-25 15:40:36 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2022-01-25 15:40:38 +0100 <maerwald> or use Setup.hs directly
2022-01-25 15:40:42 +0100 <dminuoso> bjourne: Even with v2-install they are installed system-wide... sort of..
2022-01-25 15:40:49 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 15:41:06 +0100ec(~ec@gateway/tor-sasl/ec)
2022-01-25 15:42:08 +0100Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2022-01-25 15:42:23 +0100 <dminuoso> maerwald: Im not sure what is worse. That cryptonite is written by someone who is not a reknown crypographer with an experience in implementing robust side-channel free crypo on well researched (with respect to side channels) languages and tools...
2022-01-25 15:42:36 +0100 <maerwald> xD
2022-01-25 15:42:44 +0100 <dminuoso> Or that it seems mostly unmaintained, with nobody even willing to pick it up..
2022-01-25 15:42:51 +0100 <maerwald> I'm more concerned about half the haskell community not caring about that fact
2022-01-25 15:42:52 +0100 <yushyin> one can re-use the same package env with --package-env=
2022-01-25 15:43:05 +0100 <maerwald> so much for haskellers care about correctness
2022-01-25 15:43:09 +0100 <maerwald> no, they care about their types
2022-01-25 15:43:10 +0100 <dminuoso> And before someone misunderstands this, Im not questioning HVRs expertise as an expert Haskell programmer...
2022-01-25 15:43:36 +0100 <dminuoso> But writing good Haskell code and writing safe cryptographic code are two very separate tasks. :(
2022-01-25 15:43:46 +0100 <janus> dminuoso: nobody _can_ pick it up since he explicitly disagreed with that. and he claims he is working on 9.2 support. so i would not flat out say 'unmaintained'
2022-01-25 15:44:03 +0100 <dminuoso> janus: Fair.
2022-01-25 15:44:07 +0100 <maerwald> dminuoso: https://github.com/GaloisInc/haskell-tor/issues/23#issuecomment-179598343
2022-01-25 15:44:13 +0100cheater(~Username@user/cheater) (Quit: (BitchX) The Power Rangers use BitchX. Shouldn't you?)
2022-01-25 15:44:15 +0100 <maerwald> "In this particular case, I, personally, am comfortable offloading the responsibility for a lot of timing-level attacks to the author of the cryptonite library"
2022-01-25 15:44:18 +0100 <maerwald> well....
2022-01-25 15:44:36 +0100 <janus> (my previous message referred to cryptonite/memory/foundation, not hvr)
2022-01-25 15:44:50 +0100 <dminuoso> maerwald: Yeah I read that, but the argument starts all wrong.
2022-01-25 15:45:10 +0100 <maerwald> I think they are completely wrong
2022-01-25 15:45:41 +0100 <maerwald> And Haskell is in fact not the right language for this. Types mean very little in this context, unless they are algorithmic proof and even that's maybe 30% of your issues
2022-01-25 15:45:43 +0100 <dminuoso> I mean there's so many published papers on securely implementing cryptographic schemes on specific compilers and languages...
2022-01-25 15:47:11 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 268 seconds)
2022-01-25 15:47:36 +0100 <maerwald> I'm not even confident that bindings eliminate all those issues. Doesn't that depend on the API?
2022-01-25 15:47:57 +0100 <maerwald> A secret could leak into the Haskell codebase
2022-01-25 15:48:33 +0100 <maerwald> so many reasons I don't touch any of that with a 10 foot pole
2022-01-25 15:48:52 +0100 <dminuoso> maerwald: Ive read enough cryptopapers to be seriously scared, there's so many non-obvious mistakes.
2022-01-25 15:48:55 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-01-25 15:49:18 +0100 <dminuoso> The combination of efficient and side-channel-free elliptic curve cryptography is ridiculously hard.
2022-01-25 15:49:41 +0100 <maerwald> My practical experience is limited to writing a toy implementation of NTRUEncrypt. That was enough for me to figure out I don't know sh*t about those things
2022-01-25 15:49:56 +0100 <dminuoso> You essentially have to resort to specifically picked algorithms that, when executed on traditional van neumann machines, will run under constant times, dont leak things into caches..
2022-01-25 15:50:04 +0100 <dminuoso> *specific implementations
2022-01-25 15:50:31 +0100 <dminuoso> In the presence of super scalar processors that each year introduce new optimizations, defeating old assumptions
2022-01-25 15:50:51 +0100nvdp(~nvdp@80-100-97-100.ip.xs4all.nl)
2022-01-25 15:51:20 +0100cheater(~Username@user/cheater)
2022-01-25 15:51:39 +0100 <maerwald> there's still hope project everest will... maybe some day... turn out to be usable
2022-01-25 15:52:44 +0100briandaed(~root@185.234.208.208.r.toneticgroup.pl)
2022-01-25 15:52:57 +0100polyphem(~rod@2a02:810d:840:8754:9996:52da:e8ad:1d27) (Ping timeout: 240 seconds)
2022-01-25 15:54:03 +0100polyphem(~rod@2a02:810d:840:8754:f5a2:d787:2125:a747)
2022-01-25 15:54:16 +0100 <maerwald> until then, we just trust some random dude on hackage
2022-01-25 15:55:22 +0100nvdp(~nvdp@80-100-97-100.ip.xs4all.nl) (Remote host closed the connection)
2022-01-25 15:57:04 +0100shriekingnoise(~shrieking@201.231.16.156)
2022-01-25 15:57:46 +0100alx741(~alx741@157.100.93.160)
2022-01-25 15:58:45 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-01-25 16:00:06 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 16:00:35 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 16:00:59 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-01-25 16:01:57 +0100jackson99(~bc8147f2@cerf.good1.com)
2022-01-25 16:02:09 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-25 16:02:22 +0100 <dminuoso> Like, if you do the naive thing for EC point multiplication, you have a guaranteed side-channel attack. Unless you use a very careful implementation of a particular sliding window method.. or use montgomery ladder..
2022-01-25 16:02:33 +0100 <dminuoso> But you dont know this unless you read the right crypto papers of course.
2022-01-25 16:02:51 +0100 <dminuoso> I hate crypto
2022-01-25 16:02:53 +0100 <dminuoso> :(
2022-01-25 16:03:11 +0100futty14(~futty14@c90-143-137-255.bredband.tele2.se)
2022-01-25 16:04:35 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2022-01-25 16:06:22 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2022-01-25 16:09:56 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-01-25 16:10:21 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 16:10:21 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 16:10:21 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 16:11:51 +0100polyphem(~rod@2a02:810d:840:8754:f5a2:d787:2125:a747) (Ping timeout: 268 seconds)
2022-01-25 16:15:11 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-25 16:18:29 +0100alx741(~alx741@157.100.93.160)
2022-01-25 16:20:46 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-25 16:22:08 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 16:22:47 +0100 <futty14> fn 1 = 1
2022-01-25 16:22:48 +0100 <futty14> fn n = sum $ map fn [(n `div` 2)..n-1]
2022-01-25 16:22:48 +0100 <futty14> I had this question as an OLD exam question. I can now see that it is Narayana-Zidek-Capell numbers.
2022-01-25 16:22:49 +0100 <futty14> map fn [(n `div` 2)..n-1]
2022-01-25 16:22:49 +0100 <futty14> Β I understand that the fn above does the exact same sequence of calculation beginning from head of the list and adds another f(n+1)... f(n+2) to each successing list element. That is why the function call map is hanging, because there are just too many repetitive recursive calls that occupies stack frames.
2022-01-25 16:22:50 +0100 <futty14> I have tried but cant find a way to store fn(n) and use that to find fn(n+1), that is the next element of the list. How would you solve this?
2022-01-25 16:24:43 +0100 <sshine> futty14, memoization with an IntMap?
2022-01-25 16:25:41 +0100 <futty14> sshine I would preferably want to solve it with an accumulator or an auxiliary function.
2022-01-25 16:26:05 +0100 <sshine> futty14, I'd keep the IntMap in an accumulated parameter.
2022-01-25 16:26:13 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 240 seconds)
2022-01-25 16:27:31 +0100Sgeo(~Sgeo@user/sgeo)
2022-01-25 16:29:00 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-01-25 16:29:28 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-01-25 16:31:02 +0100xff0x(~xff0x@2001:1a81:53ac:af00:4616:9444:a1c8:27cf) (Ping timeout: 240 seconds)
2022-01-25 16:32:14 +0100xff0x(~xff0x@2001:1a81:53ac:af00:ba25:4d71:4d47:a3a5)
2022-01-25 16:32:28 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 16:33:16 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-01-25 16:33:23 +0100polyphem(~rod@2a02:810d:840:8754:ab25:19d5:5fa5:69d5)
2022-01-25 16:34:15 +0100 <ski> futty14 : if you have a max you want, then make a (recursively defined, immutable) array ?
2022-01-25 16:34:16 +0100 <futty14> sshine I am getting the error "Data constructor not in scope:" despite using import Data.IntMap (IntMap). Why might this be?
2022-01-25 16:34:27 +0100tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 250 seconds)
2022-01-25 16:34:35 +0100 <ski> *data* constructor ?
2022-01-25 16:35:21 +0100 <futty14> @ski
2022-01-25 16:35:21 +0100 <lambdabot> Maybe you meant: wiki src ask
2022-01-25 16:35:58 +0100 <ski> perhaps at this point you should show some snippet of code
2022-01-25 16:36:37 +0100 <futty14> ski hmm, I think you are referring to data [] = [] | a : [a]. A recursive definition like this? The problem is that, at the time we had to write this, we were just beginning with HOF so this is a bit out of scope.
2022-01-25 16:36:40 +0100 <janus> futty14: IntMap won't be a data constructor anyway because you construct with something like https://hackage.haskell.org/package/containers-0.6.5.1/docs/Data-IntMap-Strict.html#v:fromList
2022-01-25 16:36:44 +0100mmhat(~mmh@55d41489.access.ecotel.net)
2022-01-25 16:36:49 +0100 <ski> no
2022-01-25 16:36:56 +0100 <ski> (not referring to lists)
2022-01-25 16:37:02 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-01-25 16:37:32 +0100 <janus> but IntMap doesn't have a data constructor named IntMap, surely. so if the error message says such a constructor wasn't imported, something is already wrong, no?
2022-01-25 16:38:04 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-01-25 16:38:26 +0100 <geekosaur> IntMap's data constructors are hidden, and even if they weren't the import statement only imports the type constructor
2022-01-25 16:38:49 +0100 <janus> i agree
2022-01-25 16:39:11 +0100 <ski> > let fib12 i = arr ! i; ix = (0,12); arr = listArray ix [case i of 0 -> 0; 1 -> 1; _ -> fib12 (i-1) + fib12 (i-2) | i <- range ix] in fib12 12
2022-01-25 16:39:12 +0100 <lambdabot> 144
2022-01-25 16:39:33 +0100 <ski> futty14 : that's a recursively defined array, doing (top-down) dynamic programming
2022-01-25 16:40:05 +0100alx741(~alx741@157.100.93.160)
2022-01-25 16:42:41 +0100tomboy64(~tomboy64@user/tomboy64)
2022-01-25 16:42:41 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 16:42:46 +0100dsrt^(~dsrt@50-207-160-170-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2022-01-25 16:43:31 +0100finalti[m](~finaltima@2001:470:69fc:105::d909) (Quit: Client limit exceeded: 20000)
2022-01-25 16:43:39 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2022-01-25 16:46:09 +0100akegalj(~akegalj@141-136-204-193.dsl.iskon.hr) (Quit: leaving)
2022-01-25 16:46:39 +0100reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: Client limit exceeded: 20000)
2022-01-25 16:48:03 +0100fendor_fendor
2022-01-25 16:48:14 +0100vysn(~vysn@user/vysn) (Quit: WeeChat 3.3)
2022-01-25 16:49:01 +0100ec(~ec@gateway/tor-sasl/ec)
2022-01-25 16:50:13 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2022-01-25 16:50:26 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 16:50:49 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-01-25 16:51:27 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
2022-01-25 16:53:57 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2022-01-25 16:55:30 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-01-25 16:55:32 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-01-25 16:56:42 +0100 <shapr> somewhat on topic: Dr Rob Stewart is looking for a postdoc and PhD students for graph reduction hardware research: https://haflang.github.io/
2022-01-25 16:56:43 +0100reza[m](~rezaphone@2001:470:69fc:105::3eda)
2022-01-25 16:56:43 +0100finalti[m](~finaltima@2001:470:69fc:105::d909)
2022-01-25 16:56:53 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-01-25 16:57:16 +0100 <shapr> If you've been interested in the Reduceron ( https://www.cs.york.ac.uk/fp/reduceron/ ) and the like, that's where this is going.
2022-01-25 16:57:38 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se)
2022-01-25 16:57:53 +0100futty14(~futty14@c90-143-137-255.bredband.tele2.se) (Quit: Client closed)
2022-01-25 16:58:15 +0100futty14(~futty14@c90-143-137-255.bredband.tele2.se)
2022-01-25 16:59:09 +0100Logio_Logio
2022-01-25 16:59:13 +0100alx741(~alx741@157.100.93.160)
2022-01-25 16:59:33 +0100ardell(~ardell@user/ardell)
2022-01-25 17:01:35 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 17:02:13 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2022-01-25 17:02:40 +0100haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-01-25 17:04:28 +0100slack1256(~slack1256@191.126.227.197)
2022-01-25 17:05:18 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-25 17:06:45 +0100slac63614(~slack1256@186.11.82.162) (Ping timeout: 256 seconds)
2022-01-25 17:08:15 +0100lispy(~lispy4@84.69.59.93)
2022-01-25 17:09:19 +0100ahammer(~ahammer@120.230.113.41)
2022-01-25 17:13:55 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-01-25 17:13:57 +0100ahammer(~ahammer@120.230.113.41) (Ping timeout: 240 seconds)
2022-01-25 17:15:02 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik)
2022-01-25 17:15:33 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-01-25 17:17:17 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 240 seconds)
2022-01-25 17:17:29 +0100max22-(~maxime@2a01cb08833598006a0c8f5f388a6d4e.ipv6.abo.wanadoo.fr)
2022-01-25 17:17:48 +0100ahammer(~ahammer@120.230.113.41)
2022-01-25 17:19:23 +0100mbuf(~Shakthi@122.173.231.124) (Quit: Leaving)
2022-01-25 17:19:46 +0100zmt00(~zmt00@user/zmt00)
2022-01-25 17:19:55 +0100alx741(~alx741@157.100.93.160)
2022-01-25 17:22:07 +0100alx741(~alx741@157.100.93.160) (Read error: Connection reset by peer)
2022-01-25 17:22:10 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2022-01-25 17:22:10 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2022-01-25 17:22:10 +0100dibblego(~dibblego@haskell/developer/dibblego)
2022-01-25 17:25:05 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 17:25:15 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2022-01-25 17:25:37 +0100ahammer(~ahammer@120.230.113.41) (Ping timeout: 240 seconds)
2022-01-25 17:25:37 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
2022-01-25 17:25:52 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-01-25 17:29:03 +0100RFV89(~RFV@171.red-88-13-191.dynamicip.rima-tde.net)
2022-01-25 17:29:07 +0100 <haskellberryfinn> how to build and run a single .hs file? for quick test purpose
2022-01-25 17:29:32 +0100 <haskellberryfinn> I've installed the necessary lib via cabal install --lib --env . a_library
2022-01-25 17:30:59 +0100RFV89RFV
2022-01-25 17:31:11 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2022-01-25 17:33:45 +0100rusrushal13(~rusrushal@2409:4056:e95:fe3c:29c9:f5b0:286b:2495) (Ping timeout: 256 seconds)
2022-01-25 17:34:09 +0100slac74418(~slack1256@186.11.82.162)
2022-01-25 17:34:11 +0100 <tomsmeding> haskellberryfinn: it seems if you just use 'ghc yourfile.hs' in the directory where you put that .ghc.environment file, it works?
2022-01-25 17:35:13 +0100 <geekosaur> for a quick test if you're not worried about performance you can run it in bytecode mode: runghc file.hs
2022-01-25 17:35:40 +0100RFV(~RFV@171.red-88-13-191.dynamicip.rima-tde.net) (Quit: Client closed)
2022-01-25 17:36:32 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-01-25 17:37:57 +0100slack1256(~slack1256@191.126.227.197) (Ping timeout: 240 seconds)
2022-01-25 17:38:25 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 17:38:58 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-01-25 17:39:02 +0100alx741(~alx741@157.100.93.160)
2022-01-25 17:39:38 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 17:40:33 +0100Guest65(~Guest65@2a02:8109:a380:b58:917e:d1c3:3da5:dce7)
2022-01-25 17:40:42 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-01-25 17:40:55 +0100 <haskellberryfinn> great
2022-01-25 17:41:24 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 17:41:26 +0100alx741(~alx741@157.100.93.160) (Client Quit)
2022-01-25 17:41:53 +0100SummerSonw(~The_viole@203.77.49.232) (Quit: Leaving)
2022-01-25 17:42:30 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 17:43:01 +0100vysn(~vysn@user/vysn)
2022-01-25 17:44:15 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 17:44:51 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net)
2022-01-25 17:45:01 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net) (Remote host closed the connection)
2022-01-25 17:45:13 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 17:46:58 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 17:48:49 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 17:48:49 +0100Vajb(~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) (Read error: Connection reset by peer)
2022-01-25 17:49:22 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-01-25 17:50:23 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:7a00:67ce:f137:ad93) (Quit: WeeChat 2.8)
2022-01-25 17:50:52 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 17:54:16 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-25 17:54:43 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
2022-01-25 17:57:02 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-01-25 18:00:49 +0100slack1256(~slack1256@191.126.227.197)
2022-01-25 18:01:25 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2022-01-25 18:02:52 +0100slac74418(~slack1256@186.11.82.162) (Ping timeout: 250 seconds)
2022-01-25 18:02:53 +0100vglfr(~vglfr@46.96.147.122) (Read error: Connection reset by peer)
2022-01-25 18:02:57 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-01-25 18:03:40 +0100vglfr(~vglfr@46.96.147.122)
2022-01-25 18:04:00 +0100ec(~ec@gateway/tor-sasl/ec)
2022-01-25 18:06:08 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-01-25 18:06:21 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-01-25 18:08:09 +0100 <justsomeguy> Also, if you have stack you can write a stack script -- https://www.fpcomplete.com/haskell/tutorial/stack-script/ -- in particular check out the "Script interpreter" section. This is more complicated, but lets you add packages and specify a version of GHC.
2022-01-25 18:08:22 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 18:08:26 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 18:08:40 +0100 <geekosaur> it also makes "cabal install --lib" unnecessary
2022-01-25 18:09:00 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 18:09:10 +0100 <geekosaur> (which is good as it pollutes the Haskell environment and can cause version conflicts)
2022-01-25 18:09:25 +0100 <geekosaur> cabal also has a script mode but it's less well developed
2022-01-25 18:11:07 +0100RFV(~Thunderbi@171.red-88-13-191.dynamicip.rima-tde.net)
2022-01-25 18:12:49 +0100RFV_(~RFV_@171.red-88-13-191.dynamicip.rima-tde.net)
2022-01-25 18:13:02 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Ping timeout: 240 seconds)
2022-01-25 18:13:16 +0100mmhat(~mmh@55d41489.access.ecotel.net) (Ping timeout: 250 seconds)
2022-01-25 18:13:38 +0100 <sclv> i don't think cabal's script mode is less developed in any particular way?
2022-01-25 18:13:43 +0100 <sclv> except maybe ghc specification?
2022-01-25 18:13:47 +0100 <sclv> curious what you consider is missing
2022-01-25 18:13:55 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-01-25 18:14:00 +0100RFV_(~RFV_@171.red-88-13-191.dynamicip.rima-tde.net) (Client Quit)
2022-01-25 18:14:14 +0100RFV__(~RFV__@171.red-88-13-191.dynamicip.rima-tde.net)
2022-01-25 18:14:33 +0100 <yushyin> caching the binary
2022-01-25 18:15:16 +0100 <yushyin> it will recompile and relink every time
2022-01-25 18:15:18 +0100 <c_wraith> what binary? it definitely caches any packages it needs to build. And it doesn't compile the script it's running...
2022-01-25 18:15:46 +0100 <c_wraith> Oh, unless you mean the fakepackage thing
2022-01-25 18:15:52 +0100Akiva(~Akiva@user/Akiva)
2022-01-25 18:17:10 +0100 <monochrom> I don't mind recompiling the script, in the context that if I use "cabal run" it's because I have a casual, easy to recompile script in the first place.
2022-01-25 18:17:41 +0100 <monochrom> I do mind the "everything is up to date" message to stdout.
2022-01-25 18:18:11 +0100 <monochrom> I understand the dilemma of "but where do you want it sent?!" and I have no good solution.
2022-01-25 18:18:28 +0100 <c_wraith> What about the dilemma of "why do you want it sent at all?"
2022-01-25 18:18:35 +0100 <monochrom> Unless "add more cmdline options!" is a good solution :)
2022-01-25 18:19:23 +0100 <c_wraith> It seems like an oversight from sharing code with cabal build
2022-01-25 18:19:28 +0100 <monochrom> Oh, this is going to be the great debate between 1970s UI design and 21st century UI design.
2022-01-25 18:20:04 +0100 <monochrom> In the 1970s unix philosophy, no news is good news, if there is no error, the program must output nothing.
2022-01-25 18:20:20 +0100 <c_wraith> Like, I can definitely see a reason to have a command line option to add it.
2022-01-25 18:20:30 +0100 <monochrom> In the modern philosophy, reporting on progress and success is all the rage.
2022-01-25 18:20:57 +0100 <c_wraith> maybe it can write to 3 by default. :)
2022-01-25 18:21:39 +0100 <geekosaur> what good is writing to stdaux? :ΓΎ
2022-01-25 18:21:55 +0100 <geekosaur> (I don't think even windows has that any more)
2022-01-25 18:21:59 +0100 <c_wraith> it won't show up the terminal. :P
2022-01-25 18:22:15 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-01-25 18:22:18 +0100dut(~dut@user/dut) (Quit: Leaving)
2022-01-25 18:22:29 +0100 <monochrom> Windows? Oh! Send to PRN: >:)
2022-01-25 18:22:57 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
2022-01-25 18:23:14 +0100 <c_wraith> the real issue is that text streams are a horrible way to present structured information. "this is from the build tool" and "this is from the subprogram you asked the build tool to run" is not a distinction unix is designed to handle
2022-01-25 18:23:16 +0100 <monochrom> Perhaps send to syslog or Window's equivalent of syslog... >:)
2022-01-25 18:23:25 +0100vicfred(~vicfred@user/vicfred)
2022-01-25 18:23:38 +0100 <c_wraith> windows, on the other hand, has tools for it! cmdlets are pretty cool
2022-01-25 18:23:51 +0100 <geekosaur> so fd 4 :ΓΎ
2022-01-25 18:24:25 +0100 <geekosaur> (somehow I think my reference when whizzing high overhead)
2022-01-25 18:24:35 +0100 <geekosaur> *went
2022-01-25 18:24:55 +0100 <yushyin> c_wraith: don't know if anything has changed recently, but for me it used to recompile my script every time, linked it every time into a binary and executed it
2022-01-25 18:25:10 +0100 <geekosaur> \back in the DOS days fd 3 was stdaux aka COM1: and fd 4 was stdprn aka LPT1:
2022-01-25 18:25:56 +0100 <EvanR> you got your serial port and your parallel port, what else could you want
2022-01-25 18:26:32 +0100 <monochrom> parallel bundle of multiple serial ports >:)
2022-01-25 18:26:39 +0100 <polyphem> EvanR: PCSpeaker :)
2022-01-25 18:26:49 +0100 <monochrom> Oh haha I forgot the speaker
2022-01-25 18:27:17 +0100 <geekosaur> no problem, just plug some wires into the right parts of the parallel port and make another one :)
2022-01-25 18:27:17 +0100 <EvanR> important
2022-01-25 18:27:37 +0100mmhat(~mmh@55d40230.access.ecotel.net)
2022-01-25 18:27:40 +0100vicfred(~vicfred@user/vicfred) (Client Quit)
2022-01-25 18:29:01 +0100lechner(~lechner@debian/lechner)
2022-01-25 18:35:26 +0100 <polyphem> http://jubatian.com/articles/building-an-lpt-dac/
2022-01-25 18:36:33 +0100yassernasc(~yassernas@2804:29b8:505a:f33d:ccf7:da52:f075:1ff9)
2022-01-25 18:36:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba)
2022-01-25 18:47:11 +0100lispy(~lispy4@84.69.59.93) (Quit: Leaving)
2022-01-25 18:47:48 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba) (Remote host closed the connection)
2022-01-25 18:49:12 +0100 <random-jellyfish> is the state monad the equivalent of a Moore machine?
2022-01-25 18:50:03 +0100lavaman(~lavaman@98.38.249.169)
2022-01-25 18:51:39 +0100 <EvanR> moore machines take input and produce output, but s -> (a,s) just produces output (if iterated on its own state)
2022-01-25 18:52:33 +0100zincy(~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67)
2022-01-25 18:52:52 +0100 <EvanR> State s a is basically s -> (a,s)
2022-01-25 18:53:30 +0100Jing(~hedgehog@240e:390:7c53:a7e1:e5fb:7a43:8199:8861) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-01-25 18:54:25 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-01-25 18:54:27 +0100 <random-jellyfish> newtype Moore in out = Moore ( in->s->(out, s) )
2022-01-25 18:54:40 +0100 <random-jellyfish> would that be a valid definition of a Moore type?
2022-01-25 18:54:45 +0100 <EvanR> looks closer
2022-01-25 18:54:58 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-01-25 18:55:57 +0100 <EvanR> out is basically what wikipedia is calling an "entry action", a possible action on entering a state
2022-01-25 18:56:43 +0100 <EvanR> I'm not sure if this technically makes any sense
2022-01-25 18:56:55 +0100 <EvanR> the old and new state are accessible to the function
2022-01-25 18:57:59 +0100 <EvanR> there are more things in haskell functions and earth than dreamt of in first year compsci/engineering xD
2022-01-25 18:59:26 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-01-25 18:59:30 +0100bontaq`(~user@ool-45779fe5.dyn.optonline.net)
2022-01-25 19:00:37 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
2022-01-25 19:00:43 +0100zincy(~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Remote host closed the connection)
2022-01-25 19:02:50 +0100 <random-jellyfish> true
2022-01-25 19:03:13 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 19:09:10 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 250 seconds)
2022-01-25 19:09:28 +0100 <monochrom> Also take a look at https://hackage.haskell.org/package/machines . In Data.Machine.Moore, take a look at unfoldMoore; in Data.Machine.Mealy, take a look at unfoldMealy.
2022-01-25 19:10:03 +0100 <monochrom> It looks like in->s->(out, s) is Mealy there.
2022-01-25 19:10:27 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-01-25 19:10:37 +0100 <monochrom> I like Wikipedia, but I trust edwardk more than I trust Wikipedia. :)
2022-01-25 19:11:17 +0100 <EvanR> the reference for Data.Machine.Moore goes to wikipedia xD
2022-01-25 19:11:27 +0100 <EvanR> an authority loop
2022-01-25 19:11:52 +0100 <EvanR> the trust levels are incomparable
2022-01-25 19:12:06 +0100 <EvanR> or both infinite, depending
2022-01-25 19:12:30 +0100futty14(~futty14@c90-143-137-255.bredband.tele2.se) (Quit: Client closed)
2022-01-25 19:13:40 +0100 <EvanR> yeah unfoldMoore is carefully defined so the output only depends on the target state
2022-01-25 19:15:18 +0100lispy(~lispy4@84.69.59.93)
2022-01-25 19:16:32 +0100Major_Biscuit(~MajorBisc@c-001-017-008.client.tudelft.eduvpn.nl) (Ping timeout: 250 seconds)
2022-01-25 19:16:42 +0100econo(uid147250@user/econo)
2022-01-25 19:17:42 +0100carbolymer_carbolymer
2022-01-25 19:17:49 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2022-01-25 19:17:52 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 19:17:52 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 19:17:52 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 19:18:05 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 268 seconds)
2022-01-25 19:18:17 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
2022-01-25 19:19:23 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-01-25 19:20:01 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba)
2022-01-25 19:20:21 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-01-25 19:21:40 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-01-25 19:22:32 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-25 19:22:47 +0100neceve(~quassel@2.26.93.228)
2022-01-25 19:24:08 +0100geranim0(~geranim0@d-132-204-221-88.res.umontreal.ca) (Remote host closed the connection)
2022-01-25 19:25:20 +0100gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2022-01-25 19:26:01 +0100gehmehgeh(~user@user/gehmehgeh)
2022-01-25 19:26:53 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-01-25 19:29:28 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-01-25 19:31:49 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2022-01-25 19:32:50 +0100little_mac(~little_ma@2601:410:4300:3ce0:b072:e210:a25e:85eb)
2022-01-25 19:32:55 +0100 <EvanR> is it possible to have a pure interface to opengl, like, imagine a Picture type contains all values necessary to produce an Image (juicy pixels), can f :: Picture -> Image RGB8 be done
2022-01-25 19:33:37 +0100 <EvanR> even a 'software' opengl like mesa will involve going through the arcane opengl dynamic loading process
2022-01-25 19:33:57 +0100 <EvanR> can it be pure
2022-01-25 19:35:22 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2022-01-25 19:36:00 +0100 <EvanR> other than writing an entire gl implementation in haskell code
2022-01-25 19:36:09 +0100RFV__(~RFV__@171.red-88-13-191.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2022-01-25 19:36:35 +0100lionhairdino(~jacoo@121.131.39.82) (Ping timeout: 268 seconds)
2022-01-25 19:36:45 +0100azimut_(~azimut@gateway/tor-sasl/azimut)
2022-01-25 19:37:48 +0100 <EvanR> is the main issue concurrent access to the gpu from different values wanting to render from different threads
2022-01-25 19:37:51 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2022-01-25 19:38:25 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
2022-01-25 19:38:39 +0100 <EvanR> is it like, "son of the gdk/gtk+ thing from yesterday"
2022-01-25 19:39:04 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba) (Remote host closed the connection)
2022-01-25 19:42:10 +0100 <monochrom> I think it is just that all Haskell compilers today compile pure Haskell to CPU-only code, not GPU code.
2022-01-25 19:42:44 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2022-01-25 19:42:56 +0100 <EvanR> ok, good angle on that, but just asking from a logic perspective not performance
2022-01-25 19:43:07 +0100 <monochrom> In Haskell today, to invite the GPU to work. IO is involved because, just because, inviting the GPU requires an FFI call.
2022-01-25 19:43:24 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 19:43:32 +0100 <EvanR> similar to the use of GMP for Integer
2022-01-25 19:43:33 +0100 <dolio> I'm sure you can do it, but a lot of it is going to be pretty bad GPU code.
2022-01-25 19:43:37 +0100 <monochrom> Logically it is pure.
2022-01-25 19:43:46 +0100random-jellyfish(~random-je@user/random-jellyfish)
2022-01-25 19:43:50 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 19:43:50 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 19:43:50 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 19:45:13 +0100 <EvanR> to allow multiple values simultaneously do you have to spawn a new process? xD
2022-01-25 19:45:19 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 19:46:05 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
2022-01-25 19:46:10 +0100 <EvanR> clearly we have concurrent apps all using the gpu
2022-01-25 19:46:24 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-01-25 19:46:37 +0100 <dolio> GPUs want to run the same code on a lot of data at once. And probably don't want you to be using things persistently.
2022-01-25 19:46:39 +0100 <megaTherion> EvanR: not necessarily rendering or?
2022-01-25 19:46:49 +0100dminuoso_(~dminuoso@static.88-198-218-68.clients.your-server.de)
2022-01-25 19:47:05 +0100random-jellyfish(~random-je@user/random-jellyfish) (Client Quit)
2022-01-25 19:47:09 +0100 <EvanR> yes rendering
2022-01-25 19:47:29 +0100dminuoso(~dminuoso@user/dminuoso) (Ping timeout: 256 seconds)
2022-01-25 19:47:29 +0100canta(~canta@user/canta) (Ping timeout: 256 seconds)
2022-01-25 19:47:33 +0100 <megaTherion> I dont think so, but Im not very good with GLX .. thought that has to be done by a single thread
2022-01-25 19:47:46 +0100noddy_(~user@user/noddy) (Quit: WeeChat 3.4)
2022-01-25 19:47:51 +0100canta(~canta@user/canta)
2022-01-25 19:47:55 +0100 <EvanR> right, which is where multiple processes comes in (uhg)
2022-01-25 19:48:51 +0100noddy(~user@user/noddy)
2022-01-25 19:49:42 +0100 <EvanR> if one of the images is demanded, spawn a side process, run the rendering, get the image back, return the image through IPC, end of process
2022-01-25 19:50:53 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds)
2022-01-25 19:50:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-25 19:52:18 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-01-25 19:53:02 +0100 <EvanR> haskell simply running on the gpu in the first place would be interesting though
2022-01-25 19:53:44 +0100 <geekosaur> it'd run poorly though. graph reduction is rather different from what gpus are designed to do
2022-01-25 19:53:48 +0100haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 250 seconds)
2022-01-25 19:54:06 +0100 <EvanR> ok, not simply running then
2022-01-25 19:55:00 +0100 <geekosaur> so, like e.g. atom or clash, there are haskell libraries that can write programs for gpus (see for example the accelerate gpu backend)
2022-01-25 19:56:03 +0100 <EvanR> something similar to haskell where the primitives are like mapping, folding, which can be done in so many words iterating gpu ops
2022-01-25 19:56:31 +0100 <EvanR> the more gpu friendly the program the better performance
2022-01-25 19:57:42 +0100 <EvanR> a certain type of fold over 1024 value array could be done with 10 passes
2022-01-25 19:57:47 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-01-25 19:58:23 +0100 <EvanR> getting side tracked nvm
2022-01-25 19:58:29 +0100noddy(~user@user/noddy) (Quit: WeeChat 3.4)
2022-01-25 19:58:45 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 19:58:59 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 19:59:04 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 19:59:04 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 19:59:04 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 19:59:16 +0100noddy(~user@user/noddy)
2022-01-25 19:59:57 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-01-25 20:00:19 +0100 <EvanR> does vulkan have any better story with the thread safety
2022-01-25 20:00:55 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 20:02:48 +0100Tuplanolla(~Tuplanoll@91-159-68-166.elisa-laajakaista.fi)
2022-01-25 20:02:56 +0100 <geekosaur> I'd imagine it's not so different from the X server communication I described yesterday: each thread would need its own independent connection to the GPU, and I'm not sure a GPU can even handle multiple threads talking to it
2022-01-25 20:04:20 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-01-25 20:06:48 +0100max22-(~maxime@2a01cb08833598006a0c8f5f388a6d4e.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2022-01-25 20:07:58 +0100 <EvanR> only 1 GPU, only 1 X Server. in BeOS there was only 1 user and at least there they exploited that for simplification purposes xD
2022-01-25 20:08:27 +0100noddy(~user@user/noddy) (Quit: WeeChat 3.4)
2022-01-25 20:09:31 +0100noddy(~user@user/noddy)
2022-01-25 20:09:48 +0100 <geekosaur> actually I suspect 1 GPU (which itself has multiple threads) is fine if you allocate a CPU thread that manages and communicates with N GPU threads
2022-01-25 20:10:16 +0100 <geekosaur> and use locking/mutexes as you might for communication between CPU threads
2022-01-25 20:10:36 +0100 <geekosaur> it may well be more expensive than between CPU threads though
2022-01-25 20:11:00 +0100 <geekosaur> the GPU model is to push as much onto the GPU as possible and communicate only at the start and end
2022-01-25 20:12:12 +0100noddy(~user@user/noddy) (Client Quit)
2022-01-25 20:13:00 +0100noddy(~user@user/noddy)
2022-01-25 20:13:33 +0100 <EvanR> I see and that is where the OS graphics system sits
2022-01-25 20:13:58 +0100 <EvanR> threads mediator
2022-01-25 20:14:13 +0100 <geekosaur> but I don't know whether opengl gives you that level of access or if you'd have to switch to opencl/cuda/etc
2022-01-25 20:16:17 +0100dmitrydidi(~dmitrydid@2a02:a317:e040:3700:d129:fb7:b5de:86bb)
2022-01-25 20:16:37 +0100deadmarshal(~deadmarsh@95.38.230.223) (Ping timeout: 240 seconds)
2022-01-25 20:17:30 +0100 <EvanR> well pure values would have a hard time gaining access to this thread manager if it's just made of regular data
2022-01-25 20:17:52 +0100 <EvanR> without globals
2022-01-25 20:18:09 +0100gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 276 seconds)
2022-01-25 20:19:07 +0100 <[exa]> EvanR: you may make a small monad that abstracts the single ("active") OpenGL context and just write an interpreter or a pure DSL for that
2022-01-25 20:19:08 +0100 <geekosaur> right, I'm not entirely sure how this relates to your original question. clearly with opengl some amount of data lives on the cpu and could presu,mably be accessed without gpu involvement (which is guaranteed to be in IO) but it's entirely possible that it lives in the host (CPU) opengl library and aain requires IO to access
2022-01-25 20:19:19 +0100 <geekosaur> *again
2022-01-25 20:19:46 +0100 <[exa]> EvanR: Vulkan kinda improves it because they worked hard for not having the "active context" there except for absolutely neccessary parts (like, there's 1 OS and 1 GPU)
2022-01-25 20:19:48 +0100 <geekosaur> although depending on the API it might be wrappable or even directly declared as pure FFI
2022-01-25 20:19:57 +0100zincy(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2022-01-25 20:20:08 +0100gehmehgeh(~user@user/gehmehgeh)
2022-01-25 20:20:28 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 20:21:08 +0100 <EvanR> what I'm thinking is there's no data assumed or left on the GPU, to do a rendering, everything is uploaded, the pixels are crunched, the framebuffer is downloaded, and all the resources are deleted
2022-01-25 20:21:31 +0100 <EvanR> i.e. no side effects
2022-01-25 20:21:39 +0100 <[exa]> that can be done pretty easily with vulkan, yes, although it's inefficient
2022-01-25 20:21:49 +0100 <geekosaur> ^
2022-01-25 20:21:54 +0100 <EvanR> oh really?
2022-01-25 20:22:01 +0100 <geekosaur> the ideal there is you upload it to the gpu and manage it there
2022-01-25 20:22:04 +0100soxen(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-01-25 20:22:09 +0100 <EvanR> well yes
2022-01-25 20:22:10 +0100 <geekosaur> you only rarely do one-shot things
2022-01-25 20:22:17 +0100 <[exa]> yeah, perhaps a different more complicated DSL would be needed for that
2022-01-25 20:22:19 +0100zincy(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2022-01-25 20:22:22 +0100 <geekosaur> because they are by their nature inefficient
2022-01-25 20:22:37 +0100 <EvanR> but uploading a bunch of stuff, managing it with imperative programming in various ad hoc ways, sucks
2022-01-25 20:22:48 +0100 <EvanR> and I've done it enough xD
2022-01-25 20:23:10 +0100 <[exa]> the most problematic thing on GPUs is that the basic imperative building blocks there (kernels) do not compose well at all (you can run them serially but you usually lose tons of cache performance, which is the main point for using GPUs)
2022-01-25 20:23:23 +0100dmitrydidi(~dmitrydid@2a02:a317:e040:3700:d129:fb7:b5de:86bb) ()
2022-01-25 20:23:35 +0100 <[exa]> and there really aren't many "better languages" to specify kernels in more composable way; check out perhaps Accelerate or Futhark
2022-01-25 20:24:00 +0100 <[exa]> and AFAIK the human optimization intervention there is still mostly uncontested
2022-01-25 20:24:51 +0100 <[exa]> I wish there was a good math for cache efficient array traversal shapes
2022-01-25 20:27:38 +0100nightbreak(~nightbrea@nat-168-7-239-4.rice.edu)
2022-01-25 20:27:39 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 20:28:23 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-01-25 20:28:51 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-01-25 20:29:00 +0100 <EvanR> what's inefficient is doing nothing because the API is too horrible or having nothing to show for a bunch of work that needs to be abandoned because it took too much time before you even got 1 picture
2022-01-25 20:30:29 +0100bontaq`bontaq
2022-01-25 20:30:33 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 20:31:05 +0100statusfailed(~statusfai@statusfailed.com) (Quit: leaving)
2022-01-25 20:31:58 +0100zincy(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2022-01-25 20:32:46 +0100 <[exa]> EvanR: anyway why is Accelerate not the thing you're aiming for?
2022-01-25 20:33:57 +0100statusfailed(~statusfai@statusfailed.com)
2022-01-25 20:34:01 +0100 <EvanR> high performance parallel arrays for haskell
2022-01-25 20:34:16 +0100 <EvanR> is this related to graphics somehow?
2022-01-25 20:34:48 +0100 <statusfailed> EvanR: are you talking about Accelerate?
2022-01-25 20:34:51 +0100 <[exa]> yeah it executes on GPUs
2022-01-25 20:35:28 +0100 <EvanR> the goal isn't really to make code run on GPUs, the goal is to make pictures
2022-01-25 20:35:36 +0100 <geekosaur> well, that does not guarantee it's useful for graphics
2022-01-25 20:35:43 +0100 <dolio> Pictures are arrays.
2022-01-25 20:35:46 +0100 <geekosaur> you probably want opengl for that
2022-01-25 20:35:53 +0100 <EvanR> pictures are functions from the plane to color
2022-01-25 20:36:10 +0100max22-(~maxime@2a01cb08833598002ff4585ddd5d42b3.ipv6.abo.wanadoo.fr)
2022-01-25 20:37:08 +0100 <EvanR> and a lot of techniques in these articles involve composing pictures in weird ways, layering
2022-01-25 20:37:17 +0100 <[exa]> EvanR: how big are your pictures? are the pixels computed independently? how regular is the computation?
2022-01-25 20:37:42 +0100 <EvanR> well pictures are infinite until you crop them
2022-01-25 20:37:59 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 20:37:59 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 20:37:59 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 20:38:00 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection)
2022-01-25 20:38:20 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-01-25 20:38:22 +0100 <[exa]> how much are you going to crop the pictures? :D
2022-01-25 20:38:58 +0100 <[exa]> the problem there ^ is that answers to the questions basically randomly effect whether you can or can't efficiently use GPU for the problem
2022-01-25 20:39:23 +0100 <dolio> I thought you were talking about GPUs.
2022-01-25 20:39:25 +0100 <EvanR> I care less about efficiency right now and more about working
2022-01-25 20:39:29 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba)
2022-01-25 20:39:34 +0100 <EvanR> in finite time
2022-01-25 20:39:46 +0100 <dolio> On which GPU is a picture represented by an abstract function from the plane to colors?
2022-01-25 20:39:47 +0100 <[exa]> with simple things you might be good, with even slightly complicated things you'll be just wasting a _lot_ of energy unless you spend extra time optimizing it in a weird ways
2022-01-25 20:39:49 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 240 seconds)
2022-01-25 20:40:03 +0100 <EvanR> no the GPU was not the focus of the question
2022-01-25 20:40:11 +0100 <EvanR> it was about purity and the opengl api
2022-01-25 20:40:16 +0100 <[exa]> ah okay
2022-01-25 20:40:25 +0100 <EvanR> whose backends end up being weird even if no GPU is involved
2022-01-25 20:40:31 +0100 <[exa]> why you need opengl for making pictures tho? (sorry for questioning, still trying to understand the problem)
2022-01-25 20:41:21 +0100 <EvanR> good point, I have made imaging DSLs before, definitely slower to run
2022-01-25 20:41:46 +0100 <monochrom> OpenGL was designed imperatively. But it is the state kind of imperative rather than the I/O kind. You can always think of it as a state monad in the worst case. And the state is even pretty simple, it's a stack of matrices.
2022-01-25 20:41:59 +0100 <EvanR> but also, if you get pictures by writing it with the OpenGL stuff, then you could hypothetically take the finished result and put it into a more performance engine
2022-01-25 20:42:14 +0100 <EvanR> without first needing to mess with the engine
2022-01-25 20:42:21 +0100 <monochrom> Still, this does not mean that a Haskell compiler today compiles pure code to OpenGL calls.
2022-01-25 20:42:25 +0100 <EvanR> so prototyping visual effects
2022-01-25 20:42:34 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba) (Remote host closed the connection)
2022-01-25 20:42:43 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba)
2022-01-25 20:42:55 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 20:43:00 +0100 <[exa]> openGL is a DSL for setting up a very regular graphics pipeline and then firing as much data through it as quickly as possible, so it might be useful but you should be aware of the limitations, which are very often derived from the design of GPU hardware
2022-01-25 20:43:01 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds)
2022-01-25 20:43:38 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 20:43:51 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 20:43:56 +0100ubert1(~Thunderbi@p200300ecdf099416f339e1e74dd0e9e7.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-01-25 20:44:00 +0100 <EvanR> literal functions from R2 to Color work well, they are just very slow
2022-01-25 20:44:01 +0100 <dolio> Or derived from the design of GPU hardware 15 years ago.
2022-01-25 20:44:09 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2022-01-25 20:44:18 +0100 <[exa]> for example, if you have a pure function that does (x,y) -> PixelColor and that doesn't contain any cases, that's literally THE GPU usecase and it's going to be fast
2022-01-25 20:44:20 +0100masa(~masa@146.185.219.13)
2022-01-25 20:44:25 +0100 <masa> hi
2022-01-25 20:44:26 +0100 <EvanR> uploading the few things to the GPU, creating 1 picture, downloading the frame buffer and deleting the objects is much faster, surprisingly
2022-01-25 20:44:30 +0100 <masa> whats haskell?
2022-01-25 20:44:37 +0100 <[exa]> EvanR: yeah that's Accelerate. :]
2022-01-25 20:44:46 +0100 <monochrom> Hey, C idioms are derived from the design of CPU 55 years ago. We're doing OK! :)
2022-01-25 20:45:03 +0100nightbreak(~nightbrea@nat-168-7-239-4.rice.edu) (Quit: Signing off for now...)
2022-01-25 20:45:06 +0100 <dolio> Are we, though? :ΓΎ
2022-01-25 20:45:06 +0100 <[exa]> dolio: true, maybe more like 25. :D
2022-01-25 20:45:45 +0100 <geekosaur> 50's probably right
2022-01-25 20:46:01 +0100 <masa> americans r u?
2022-01-25 20:46:16 +0100masa(~masa@146.185.219.13) ()
2022-01-25 20:46:42 +0100 <monochrom> Haskell is a programming language.
2022-01-25 20:46:45 +0100 <geekosaur> dammit, was going to answer but had to check something outside my apt
2022-01-25 20:46:59 +0100 <monochrom> Oh you can answer whether you're American. :)
2022-01-25 20:47:33 +0100 <dsal> americans.ru
2022-01-25 20:47:33 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Ping timeout: 256 seconds)
2022-01-25 20:47:38 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 20:49:27 +0100 <monochrom> dsal: Did you know of Sheet Music Boss's American anthem but Russian? https://youtu.be/JSAzUlJd4yg
2022-01-25 20:49:32 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net)
2022-01-25 20:50:40 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg)
2022-01-25 20:50:59 +0100 <dsal> That's amazing.
2022-01-25 20:51:06 +0100 <monochrom> :)
2022-01-25 20:51:50 +0100 <monochrom> Notice that at some point the left hand is already doing the Russian anthem subtly.
2022-01-25 20:52:03 +0100 <EvanR> [exa], yeah in fact that's the only form allowed for a fragment program xD
2022-01-25 20:52:48 +0100 <EvanR> so the old school fire effect has to be done iteratively
2022-01-25 20:54:02 +0100yauhsien_(~yauhsien@61-231-17-3.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-01-25 20:54:55 +0100ProfSimm(~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds)
2022-01-25 20:55:13 +0100fendor(~fendor@77.119.167.8.wireless.dyn.drei.com) (Remote host closed the connection)
2022-01-25 20:56:40 +0100yassernasc(~yassernas@2804:29b8:505a:f33d:ccf7:da52:f075:1ff9) (Remote host closed the connection)
2022-01-25 20:56:57 +0100yassernasc(~yassernas@2804:29b8:505a:f33d:ccf7:da52:f075:1ff9)
2022-01-25 20:57:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba) (Remote host closed the connection)
2022-01-25 20:59:17 +0100pieguy128_(~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-188.dsl.bell.ca) (Ping timeout: 240 seconds)
2022-01-25 20:59:39 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
2022-01-25 21:00:42 +0100lavaman(~lavaman@98.38.249.169)
2022-01-25 21:00:50 +0100RFV1(~Thunderbi@171.red-88-13-191.dynamicip.rima-tde.net)
2022-01-25 21:01:32 +0100RFV(~Thunderbi@171.red-88-13-191.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
2022-01-25 21:01:32 +0100RFV1RFV
2022-01-25 21:02:24 +0100RFV(~Thunderbi@171.red-88-13-191.dynamicip.rima-tde.net) (Client Quit)
2022-01-25 21:04:52 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 250 seconds)
2022-01-25 21:04:57 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 240 seconds)
2022-01-25 21:05:56 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-01-25 21:07:05 +0100juhp(~juhp@128.106.188.82)
2022-01-25 21:07:13 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net)
2022-01-25 21:07:20 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-52-65-93-194-105.dsl.bell.ca)
2022-01-25 21:07:27 +0100yassernasc(~yassernas@2804:29b8:505a:f33d:ccf7:da52:f075:1ff9) (Remote host closed the connection)
2022-01-25 21:12:36 +0100 <oak-> I'd say use of Vulkan is rather simple, and my opinion is that in the end it is easier to understand than OpenGL. You just need to do many initialization steps before you get to draw your first triangle, because Vulkan wants to support all common desktop operating systems (Linux, macOs, Windows) and Android, and all different kinds of graphics hardware and color spaces
2022-01-25 21:14:01 +0100 <oak-> I didn't read the whole discussion, but yes it provides quite good threading support, although you rarely need to use more than 1 thread for pushing the command queues to the GPU
2022-01-25 21:14:38 +0100ardell(~ardell@user/ardell) (Quit: Konversation terminated!)
2022-01-25 21:16:40 +0100lispy(~lispy4@84.69.59.93) (Quit: Leaving)
2022-01-25 21:17:05 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-25 21:17:32 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-25 21:17:38 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt)
2022-01-25 21:18:04 +0100briandaed(~root@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal)
2022-01-25 21:20:46 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2022-01-25 21:20:49 +0100 <EvanR> the issue is having a pure value that can be interpreted as an image by secretly using the GPU in the background. It seems feasible only if you do so from 1 thread
2022-01-25 21:20:59 +0100 <EvanR> which kind of hurts purity
2022-01-25 21:21:49 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Ping timeout: 240 seconds)
2022-01-25 21:22:41 +0100 <EvanR> because it doesn't obey the same rules as other pure values that can be arbitrarily passed between forkIO threads in haskell
2022-01-25 21:24:38 +0100 <EvanR> s/using the GPU/using OpenGL regardless of if you have a GPU/
2022-01-25 21:25:52 +0100 <EvanR> so even if you don't want to use multiple threads, the fact that you can't is a mark against the idea
2022-01-25 21:27:20 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-25 21:28:23 +0100 <EvanR> (I wonder how GMP integers gets around this)
2022-01-25 21:29:23 +0100michalz(~michalz@185.246.204.58) (Remote host closed the connection)
2022-01-25 21:30:47 +0100Erutuon(~Erutuon@user/erutuon)
2022-01-25 21:32:02 +0100 <monochrom> I think GMP doesn't have state. It's reentrant and MT-safe and all that.
2022-01-25 21:32:09 +0100 <EvanR> ah
2022-01-25 21:32:33 +0100 <monochrom> Whereas a graphics card is a singleton piece of resource that needs a mutex guard.
2022-01-25 21:32:57 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
2022-01-25 21:33:22 +0100 <monochrom> The CPU is too, but you no longer think of it because the OS has already time-sliced for you (a brute kind of mutex).
2022-01-25 21:33:27 +0100 <EvanR> I was going to say
2022-01-25 21:34:03 +0100 <monochrom> Logically you could write/add an OS to time-slice GPU too. I don't know whether people do it.
2022-01-25 21:34:17 +0100 <EvanR> the 16 CPUs I have is indeed 1 piece of resource
2022-01-25 21:34:39 +0100 <monochrom> Oh 16 is in O(1).
2022-01-25 21:35:00 +0100 <EvanR> the window system and compositor is the GPU time-slicer I guess
2022-01-25 21:35:07 +0100 <monochrom> The point is if you have n threads, n -> infinity, you are still mutexing.
2022-01-25 21:35:11 +0100 <EvanR> or kvm system
2022-01-25 21:35:34 +0100 <EvanR> er, kms
2022-01-25 21:37:11 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-01-25 21:37:46 +0100 <EvanR> how long before the cpu is eliminated and moved into the gpu in a bizarre form of reverse evolution
2022-01-25 21:38:05 +0100 <[exa]> "thread switch" on GPU is pretty heavy (the equivalent of a "register file" is like half a megabyte) so I'm not really expecting anything better than now
2022-01-25 21:38:11 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-01-25 21:38:36 +0100 <tomsmeding> you can definitely access a gpu from multiple processes
2022-01-25 21:38:38 +0100 <monochrom> Yeah, x86 context switching is merely a few registers, and people are already complaining that it's too slow.
2022-01-25 21:39:29 +0100 <tomsmeding> the driver probably muxes that all to a single stream of information that goes over the PCIe connection, but I'm not doing anything interesting and there are 7 processes having an allocation on my gpu right now
2022-01-25 21:39:35 +0100 <monochrom> So "slow" that people make ring-0 device drivers when the whole point of the x86 4 ring design is to put device drivers at ring 1 precisely because we don't want them to cause blue screens.
2022-01-25 21:40:03 +0100geekosaurmisses os/2 dammit :(
2022-01-25 21:40:06 +0100 <tomsmeding> (Xorg and some other programs that are based on a web browser, because web browsers think they are cool and have custom rendering code)
2022-01-25 21:40:12 +0100 <[exa]> monochrom: +1
2022-01-25 21:40:41 +0100 <monochrom> Oh I think even in the days of OS/2 Warp, they're already doing ring-0 device drivers.
2022-01-25 21:40:55 +0100 <geekosaur> video drivers at least were ring 1
2022-01-25 21:41:21 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2022-01-25 21:41:22 +0100 <[exa]> tomsmeding: you can actually quite reliably cause rendering pauses on most OSes I've seen by just submitting a sufficiently long-running item to GPU queue from vulkan
2022-01-25 21:42:01 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-25 21:42:03 +0100 <tomsmeding> [exa]: no one said that all those streams were actually running in parallel on the device :)
2022-01-25 21:42:22 +0100 <[exa]> yeah that's literally rare.
2022-01-25 21:43:05 +0100 <EvanR> what's wrong with this computronium, it is massively parallel but can only do 1 thing at a time?
2022-01-25 21:43:07 +0100ec(~ec@gateway/tor-sasl/ec)
2022-01-25 21:43:24 +0100 <tomsmeding> only one client can tell it what 1e6 things to run in parallel
2022-01-25 21:43:29 +0100 <monochrom> Each "1 thing" demands all of the massive parallelism.
2022-01-25 21:43:52 +0100zer0bitz(~zer0bitz@2001:2003:f444:a000:2055:673d:3155:da63) (Ping timeout: 250 seconds)
2022-01-25 21:43:56 +0100 <tomsmeding> also a gpu is mostly a SIMD (single-instruction multiple-data) device, just very M
2022-01-25 21:44:05 +0100 <monochrom> Programmers are control freaks, performance freaks, monopoly freaks.
2022-01-25 21:44:06 +0100 <EvanR> I question that situation
2022-01-25 21:44:09 +0100 <[exa]> unreal voice: M-M-M-Muuultiple!
2022-01-25 21:44:21 +0100 <EvanR> do all the 1 things really need all the massive parallelism
2022-01-25 21:44:33 +0100 <tomsmeding> modern gpus have a couple of processors in them (nvidia calls them SM's I think), something like 10, that can actually work sort of independently, but inside those "processors", it's one thing lots of times
2022-01-25 21:44:34 +0100 <EvanR> as if each of the 300 processes I'm running use 100% cpu
2022-01-25 21:44:54 +0100 <EvanR> rather than avg of 0
2022-01-25 21:45:05 +0100kuribas(~user@ptr-25vy0i9v7xwr83cod1i.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-01-25 21:45:07 +0100 <tomsmeding> EvanR: the things that the vocal minority cares about do (i.e. games)
2022-01-25 21:45:26 +0100 <monochrom> games and crypto mining.
2022-01-25 21:45:28 +0100 <[exa]> EvanR: that's the point, GPU is a giant heap of CPUs that share control (!) aka run in lockstep, with a really thick cabling into the memory. Something for painting the pixels en masse.
2022-01-25 21:45:29 +0100 <tomsmeding> right
2022-01-25 21:45:37 +0100 <EvanR> I guess... you gotta have a youtube channel where you run 9 call of duties at once
2022-01-25 21:45:52 +0100 <monochrom> There is no end in the pursuit of more FPS or faster mining.
2022-01-25 21:46:01 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-01-25 21:46:15 +0100 <monochrom> If 100 FPS needs only 50% of your graphic card, people will then want 200 FPS.
2022-01-25 21:46:31 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-01-25 21:46:31 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-01-25 21:46:31 +0100wroathe(~wroathe@user/wroathe)
2022-01-25 21:46:47 +0100 <EvanR> most applications, even some real time games, don't even animate most of the time
2022-01-25 21:47:17 +0100 <davean> ts not even that. A *lot* of algs work well in VERY wide SIMD
2022-01-25 21:47:24 +0100 <ephemient> may the day come when there are no more bits to be mined
2022-01-25 21:47:27 +0100 <monochrom> (Me, I conscious set 30 FPS in my RTS games. I don't even need 60. I do have a bit of need for vsync though.)
2022-01-25 21:47:29 +0100 <[exa]> EvanR: imagine you need to paint 4K screen 120times per second on a CPU pixel-by-pixel, even without any other computation-- most CPUs just wouldn't make it
2022-01-25 21:47:45 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7175:fef6:491:2dba)
2022-01-25 21:47:59 +0100 <EvanR> yeah I've been through that math
2022-01-25 21:48:07 +0100 <davean> [exa]: Uh, I can barely think of any that could
2022-01-25 21:48:30 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2022-01-25 21:48:47 +0100 <monochrom> [exa]: No no no, imagine 5 years down the road we will be talking about 8K and 1200 FPS >:)
2022-01-25 21:48:48 +0100 <[exa]> technically it could be done with a few GHz, but you don't wanna burn all your cpu power for painting same-colored pixels
2022-01-25 21:49:09 +0100 <[exa]> and yeah, it needs to get scalable
2022-01-25 21:49:38 +0100 <EvanR> increasing FPS sounds like there will need to be a re-think
2022-01-25 21:49:47 +0100 <tomsmeding> another nice thought experiment now that we're talking about 4K at 120Hz: think about the amount of data that needs to go over the video cable from your gpu to your monitor
2022-01-25 21:49:49 +0100 <davean> EvanR: why do you say that?
2022-01-25 21:49:51 +0100 <[exa]> the other spoiler: efficient parallelism is grossly impure
2022-01-25 21:50:08 +0100 <tomsmeding> and then you realise why they're thick and why 4k at 120Hz won't work with an old hdmi cable
2022-01-25 21:50:13 +0100 <EvanR> instead of dumping more entire frames, you display the deltas, which could come much faster, and be compressed as hermite polynomials or something
2022-01-25 21:50:30 +0100 <EvanR> instead of going from 1200 to 2400 or whatever
2022-01-25 21:50:47 +0100 <[exa]> EvanR: yeah that was literally what the first GPUs did
2022-01-25 21:50:48 +0100 <davean> EvanR: Uh, I hate to break it to you, but we've been there
2022-01-25 21:50:51 +0100 <davean> we've done delta rendering
2022-01-25 21:50:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-01-25 21:50:59 +0100 <monochrom> I think someone should think of some DCT on video transmission from graphics card to display...
2022-01-25 21:50:59 +0100 <davean> We still do a little
2022-01-25 21:51:14 +0100 <EvanR> and instead of discrete deltas, they are derivatives
2022-01-25 21:51:23 +0100 <EvanR> hence the polynomials
2022-01-25 21:51:29 +0100 <monochrom> Ah OK, people are smarter than me. :)
2022-01-25 21:51:38 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net) (Remote host closed the connection)
2022-01-25 21:51:50 +0100 <EvanR> then the limit is information density and not number of frames per second
2022-01-25 21:52:00 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 21:52:21 +0100 <[exa]> you need circuit density and lots of power to decode information density into screenable info
2022-01-25 21:52:27 +0100 <monochrom> I need to learn Hermite polynomials some day.
2022-01-25 21:53:07 +0100 <EvanR> yeah may you need a piece of silicon that just does an integral in some fancy way instead of computations
2022-01-25 21:53:30 +0100 <davean> EvanR: integrals *are* computation
2022-01-25 21:53:40 +0100 <davean> infact ... if we go back to the origional point of computers ...
2022-01-25 21:53:41 +0100 <monochrom> Yeah it's easy for me to propose DCTing and deltaing and DCTing the delta and delating the DCT of delta and ... but then it means needing more GPU :)
2022-01-25 21:53:59 +0100 <davean> EvanR: I think your thinking is twisted up here
2022-01-25 21:54:07 +0100 <EvanR> the point of computers to make my solitaire cards jump out at me when I win
2022-01-25 21:54:10 +0100 <[exa]> EvanR: we're there, GPUs are literally programmable things for doing these "simple computations" en masse
2022-01-25 21:54:25 +0100 <EvanR> right, I think you misunderstood what I meant
2022-01-25 21:54:33 +0100 <[exa]> yeah let's focus on that
2022-01-25 21:54:35 +0100 <davean> Thats *WHY* THey're SIMT
2022-01-25 21:54:35 +0100 <EvanR> a simpler component, not 9000 transistors
2022-01-25 21:54:41 +0100 <EvanR> for 1 thing
2022-01-25 21:54:43 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
2022-01-25 21:54:45 +0100 <davean> EvanR: it can't be simpler really
2022-01-25 21:54:52 +0100 <davean> EvanR: your approach ends up more complicated
2022-01-25 21:54:52 +0100 <EvanR> not with that attitude
2022-01-25 21:54:53 +0100 <monochrom> integral = multiple-and-add = what GPUs and signal processing chips already do
2022-01-25 21:55:00 +0100 <davean> EvanR: People *have done this*
2022-01-25 21:55:02 +0100 <monochrom> err, multiply-and-add
2022-01-25 21:55:13 +0100 <davean> we know what it looks like
2022-01-25 21:55:16 +0100 <EvanR> I understand what you're saying
2022-01-25 21:55:30 +0100 <EvanR> try to imagine that I do xD
2022-01-25 21:55:35 +0100 <[exa]> EvanR: anyway, what was your original concern? you wanted to generate images more quickly?
2022-01-25 21:55:42 +0100 <EvanR> nevermind that
2022-01-25 21:55:48 +0100 <monochrom> more purely
2022-01-25 21:56:04 +0100 <EvanR> all I'm going to get out of you guys is a "don't use OpenGL" meme
2022-01-25 21:56:41 +0100 <[exa]> because I might really have misunderstood the task you are facing
2022-01-25 21:57:20 +0100 <[exa]> nothing can really get more pure for generating images than say juicypixels' (x,y)->fn->Picture approach
2022-01-25 21:57:29 +0100 <EvanR> yeah I've done that
2022-01-25 21:57:31 +0100 <monochrom> I don't think there is a task. I think there is an intellectual inquiry. Can graphics be expressed in pure FP terms.
2022-01-25 21:57:42 +0100 <[exa]> so I'm myself wondering how come we're hating opengl now for that purpose :D
2022-01-25 21:57:57 +0100 <davean> OpenGL is a pretty bad API
2022-01-25 21:58:01 +0100 <EvanR> ^
2022-01-25 21:58:10 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-01-25 21:58:27 +0100 <davean> Its designed for a fixed function pipeline, it is completely disconnected from the compute, and its approach to matrix stacks, etc is very stareful and issue ridden
2022-01-25 21:58:32 +0100 <[exa]> davean: c'mon it's so nice for the C peoples out there, you can glEnable(GL_SMOOTH), then glBegin(GL_TRIANGES) and then WOW
2022-01-25 21:58:37 +0100 <[exa]> <3
2022-01-25 21:58:45 +0100 <davean> [exa]: no it isn't
2022-01-25 21:58:50 +0100 <EvanR> sigh
2022-01-25 21:58:53 +0100 <[exa]> ;_;
2022-01-25 21:58:59 +0100 <davean> [exa]: Look, I ended up in this channel *because* I did graphics
2022-01-25 21:59:05 +0100 <davean> opengl isn't nice :-p
2022-01-25 21:59:15 +0100 <davean> it was the first workable thing
2022-01-25 21:59:21 +0100 <[exa]> I wasn't realistic but it had its place back then
2022-01-25 21:59:30 +0100 <ski> @remember monochrom Programmers are control freaks, performance freaks, monopoly freaks.
2022-01-25 21:59:30 +0100 <lambdabot> I will never forget.
2022-01-25 21:59:35 +0100 <davean> Yes, first workable thing
2022-01-25 21:59:40 +0100 <monochrom> :)
2022-01-25 21:59:41 +0100 <[exa]> better than [tada.wav] directX1
2022-01-25 21:59:42 +0100 <davean> well, IrisGL was
2022-01-25 21:59:59 +0100 <davean> [exa]: DirectX, such a latecomer
2022-01-25 22:00:15 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-01-25 22:00:30 +0100 <davean> [exa]: I mean DirectX was a half decade later, and OpenGL wasn't even what people started on
2022-01-25 22:00:53 +0100 <[exa]> yeah
2022-01-25 22:01:01 +0100 <[exa]> what was that thing from voodoo cards called
2022-01-25 22:01:14 +0100 <EvanR> glide or something
2022-01-25 22:01:24 +0100 <[exa]> old magicks.
2022-01-25 22:03:48 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-01-25 22:04:29 +0100 <Rembane> GL?
2022-01-25 22:05:25 +0100 <geekosaur> I'm not sure it was evenn the first workable thing. Just the first one made generally available (SGI GL)
2022-01-25 22:06:09 +0100 <geekosaur> SGI opened their specs so other people could implement it, and OpenGL was born
2022-01-25 22:06:58 +0100 <davean> geekosaur: I cited IrixGL!
2022-01-25 22:07:14 +0100 <davean> er, IrisGL
2022-01-25 22:07:47 +0100 <davean> 20:59:42 davean well, IrisGL was
2022-01-25 22:08:19 +0100 <EvanR> and since the turn of the millenium, people have been trying to get people to not use parts of OpenGL ever since. I should skip ahead and tell people not to use vulkan, if that's not already a thing xD
2022-01-25 22:08:25 +0100 <geekosaur> right, but you cited it as "first workable thing", I'm saying "workable" took back seat to "open"
2022-01-25 22:08:30 +0100 <[exa]> SGI was so underrated
2022-01-25 22:10:35 +0100 <[exa]> then there was the second company that essentially invented tiling as used today everywhere, later bought by nVidia
2022-01-25 22:11:48 +0100pavonia(~user@user/siracusa)
2022-01-25 22:12:25 +0100 <davean> [exa]: are you thinking PowerVR?
2022-01-25 22:12:25 +0100 <carbolymer> I've added -ddump-simpl in the compilation options, and I ended up with a few screens of output for a fairly simple code
2022-01-25 22:12:38 +0100 <carbolymer> can I add some markers in my code which would be visible there
2022-01-25 22:12:49 +0100 <carbolymer> It's hard to find anything there
2022-01-25 22:13:02 +0100 <davean> carbolymer: names make it through
2022-01-25 22:13:33 +0100 <carbolymer> davean: well... they didn't in my case
2022-01-25 22:13:45 +0100 <carbolymer> davean: or GHC aggressively inlined my functions
2022-01-25 22:14:37 +0100Pickchea(~private@user/pickchea)
2022-01-25 22:15:11 +0100_ht(~quassel@82-168-34-160.fixed.kpn.net) (Remote host closed the connection)
2022-01-25 22:15:17 +0100 <[exa]> davean: yeah thanks, with the kyro GPUs
2022-01-25 22:16:21 +0100 <davean> [exa]: as I said, I ended up in t his channel because I did graphics ... all you have to do is poke the scars
2022-01-25 22:18:38 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-25 22:19:28 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Read error: Connection reset by peer)
2022-01-25 22:19:36 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2022-01-25 22:19:49 +0100zincy(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2022-01-25 22:23:31 +0100xsperry(~xs@user/xsperry) (Ping timeout: 256 seconds)
2022-01-25 22:24:38 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-01-25 22:26:14 +0100zincy(~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67)
2022-01-25 22:28:03 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 256 seconds)
2022-01-25 22:29:17 +0100 <EvanR> :k '[(Int,Char), (Bool,())]
2022-01-25 22:29:18 +0100 <lambdabot> [*]
2022-01-25 22:29:22 +0100 <EvanR> :k ['(Int,Char), '(Bool,())]
2022-01-25 22:29:23 +0100 <lambdabot> [(*, *)]
2022-01-25 22:29:26 +0100 <EvanR> :k '['(Int,Char), '(Bool,())]
2022-01-25 22:29:27 +0100 <lambdabot> error: parse error on input β€˜'’
2022-01-25 22:30:51 +0100 <EvanR> :k '(Int,Char) ': '(Bool,()) ': '[] -- :'(
2022-01-25 22:30:52 +0100 <lambdabot> [(*, *)]
2022-01-25 22:31:08 +0100 <geekosaur> :k '[ '(Int,Char), '(Bool,())]
2022-01-25 22:31:09 +0100 <lambdabot> [(*, *)]
2022-01-25 22:31:21 +0100 <geekosaur> '[' looks too much like a lifted Char
2022-01-25 22:31:30 +0100 <EvanR> so that's what it's talking about
2022-01-25 22:31:41 +0100jackson99(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2022-01-25 22:31:47 +0100 <EvanR> thanks
2022-01-25 22:33:09 +0100slack1256(~slack1256@191.126.227.197) (Ping timeout: 256 seconds)
2022-01-25 22:33:46 +0100jushur(~human@user/jushur)
2022-01-25 22:38:03 +0100c_wraith(~c_wraith@adjoint.us) (Ping timeout: 256 seconds)
2022-01-25 22:38:13 +0100c_wraith(~c_wraith@adjoint.us)
2022-01-25 22:43:11 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 22:45:31 +0100ensyde(~ensyde@2600:1700:2050:1040:6816:2795:9c3:9492)
2022-01-25 22:47:52 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Remote host closed the connection)
2022-01-25 22:49:25 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 22:53:32 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17) (Ping timeout: 240 seconds)
2022-01-25 22:58:06 +0100zincy(~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Remote host closed the connection)
2022-01-25 22:58:32 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-01-25 23:00:01 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-01-25 23:01:37 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net)
2022-01-25 23:03:47 +0100 <EvanR> https://paste.tomsmeding.com/kdAstKkN https://i.imgur.com/KqgmKh7.png
2022-01-25 23:05:27 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-01-25 23:06:27 +0100haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-01-25 23:07:47 +0100 <tomsmeding> the venerable triangle
2022-01-25 23:08:07 +0100 <tomsmeding> I really need to stop being pinged by paste links
2022-01-25 23:08:28 +0100 <geekosaur> heh
2022-01-25 23:08:29 +0100 <monochrom> Oh heh.
2022-01-25 23:08:32 +0100 <EvanR> there's some extraneous data there but it lets you upload whatever geometry, images
2022-01-25 23:08:49 +0100 <EvanR> shows the result, doesn't yet give you the PNG back
2022-01-25 23:08:55 +0100 <monochrom> Would you like to change the website name, or would you rather change your IRC nick? :)
2022-01-25 23:09:26 +0100 <tomsmeding> monochrom: I would rather make weechat not ping me if it has 'paste.' before and '.com' after
2022-01-25 23:09:36 +0100 <tomsmeding> but it seems it might not support regexen?
2022-01-25 23:09:38 +0100 <tomsmeding> hmm
2022-01-25 23:09:58 +0100 <monochrom> EvanR: If I want to draw a circle/disc, will it be one single "circle" command, or will it be a hundred triangles?
2022-01-25 23:10:04 +0100 <tomsmeding> or do you guys have amazing suggestions for a domain name
2022-01-25 23:10:04 +0100 <ephemient> EvanR, trying to make something like https://github.com/sleexyz/hylogen ?
2022-01-25 23:10:42 +0100 <EvanR> a disc is just 1 triangle isn't it
2022-01-25 23:11:00 +0100 <EvanR> but no this is raw gl only
2022-01-25 23:11:03 +0100 <monochrom> If I say https://pastetomsmeding.com/kdAstKkN , will it ping you?
2022-01-25 23:11:13 +0100 <EvanR> sorry, I can use a different paste site
2022-01-25 23:11:17 +0100 <tomsmeding> monochrom: no
2022-01-25 23:11:25 +0100 <tomsmeding> EvanR: no lol I need to fix this not you
2022-01-25 23:11:31 +0100 <monochrom> Then perhaps that's a good domain name :)
2022-01-25 23:11:38 +0100 <tomsmeding> I though it was amusing for a while
2022-01-25 23:12:51 +0100 <EvanR> ephemient, yeah those are great
2022-01-25 23:12:51 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Read error: Connection reset by peer)
2022-01-25 23:12:54 +0100wombat871(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-01-25 23:13:25 +0100 <monochrom> Ugh all the tomato.{com,org,net} are taken. I would think that paste.tomato.??? would be cute :)
2022-01-25 23:13:35 +0100 <tomsmeding> :p
2022-01-25 23:13:48 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2022-01-25 23:14:09 +0100 <monochrom> Ugh even toma.to is taken.
2022-01-25 23:14:18 +0100 <tomsmeding> of course it is
2022-01-25 23:15:11 +0100 <SrPx> Is `Data.List` 's sort fast? Should it be used where performance matters, or is there a well known faster (pure) version among the 3rd party libs?
2022-01-25 23:15:29 +0100 <EvanR> also I am pleasantly surprised the type inference is working here
2022-01-25 23:16:24 +0100 <monochrom> Data.List.sort is probably as fast as sorting [] goes. Someone really redesign and benchmarked the algorithm.
2022-01-25 23:16:50 +0100 <monochrom> I don't think anyone has beaten it since then.
2022-01-25 23:17:09 +0100 <EvanR> it's an unfortunate data structure for sorting
2022-01-25 23:17:27 +0100 <monochrom> Yeah if you want faster you have to first give up the []ness.
2022-01-25 23:18:41 +0100 <SrPx> well I guess I just have beaten it by 2x :pp
2022-01-25 23:18:51 +0100 <SrPx> by just fixing something silly with it?
2022-01-25 23:18:52 +0100 <EvanR> nice
2022-01-25 23:18:54 +0100 <SrPx> or am I insane
2022-01-25 23:19:11 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net) (Remote host closed the connection)
2022-01-25 23:19:16 +0100 <maerwald> likely
2022-01-25 23:19:21 +0100 <ephemient> xn--fi8h is the IDN encoding of πŸ…, if you can find some registry to register that at…
2022-01-25 23:19:23 +0100 <maerwald> but so are we
2022-01-25 23:19:27 +0100CHUD(~CHUD@host-80-41-89-108.as13285.net)
2022-01-25 23:19:51 +0100 <geekosaur> tomsmeding, https://weechat.org/scripts/tag/highlight/ last plugin on the page looks interesting
2022-01-25 23:20:27 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC (IRC client for Emacs 27.1))
2022-01-25 23:21:41 +0100 <tomsmeding> geekosaur: indeed, but not _quite_: if someone says 'tomsmeding: https://paste.tomsmeding.com/...', then I want a highlight
2022-01-25 23:22:20 +0100 <geekosaur> it's a python script, you could probably edit it to do that
2022-01-25 23:22:42 +0100 <tomsmeding> apparently weechat natively supports highlighting via a regex, but a posix ERE, which doesn't support negative lookahead -.-
2022-01-25 23:22:45 +0100 <tomsmeding> geekosaur: fair
2022-01-25 23:23:34 +0100 <geekosaur> or there are ugly ways to simulate negative lookahead
2022-01-25 23:24:45 +0100 <geekosaur> /foo([^.]|.[^c]|.c[^o]|.co[^m])/i
2022-01-25 23:24:47 +0100 <monochrom> Perhaps unhighlight paste\.tomsmeding\.com/[^ ]
2022-01-25 23:25:36 +0100monochromrefrains from citing the unhelpful theorem about regular languages being closed under complement >:)
2022-01-25 23:25:43 +0100 <geekosaur> maybe add $ as the first element of that (|||)
2022-01-25 23:25:53 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-01-25 23:26:18 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Quit: Leaving)
2022-01-25 23:26:19 +0100 <tomsmeding> monochrom: see my objection above, someone may have a highlight _and_ a paste link in the same message, then unhighlight would let me miss the message
2022-01-25 23:26:40 +0100 <SrPx> can you guys help me see if I'm doing something wrong here?
2022-01-25 23:26:40 +0100 <monochrom> Oh! Darn.
2022-01-25 23:26:53 +0100 <SrPx> I'll post the gist
2022-01-25 23:27:17 +0100 <tomsmeding> geekosaur: that's not too bad actually
2022-01-25 23:27:18 +0100 <SrPx> https://gist.github.com/VictorTaelin/2a1cf354ea710f1eae1b6d15281813ca
2022-01-25 23:27:32 +0100 <SrPx> it seems to be ~70% faster than Data.List's sort
2022-01-25 23:27:43 +0100 <SrPx> I just took the code and changed a small thing though
2022-01-25 23:28:37 +0100 <tomsmeding> SrPx: to get a decent benchmark result, use criterion and actually use random lists instead of a LCG :p
2022-01-25 23:29:00 +0100 <SrPx> oh, fair enough. is it hard to use?
2022-01-25 23:29:00 +0100 <tomsmeding> but πŸ¦† naming is already a good aspect
2022-01-25 23:29:06 +0100 <SrPx> let me see
2022-01-25 23:29:26 +0100 <SrPx> tomsmeding: I wanted to mix merge and quick in a single word but I failed (mick? querge?) so I went with quack
2022-01-25 23:29:28 +0100 <tomsmeding> there's probably decent tutorials around :p
2022-01-25 23:29:55 +0100 <SrPx> eh
2022-01-25 23:30:10 +0100 <maerwald> bottom-up mergesort is nice
2022-01-25 23:30:13 +0100 <SrPx> perhaps another day
2022-01-25 23:30:41 +0100 <monochrom> "quack sort" is not a very encouraging name >:)
2022-01-25 23:30:48 +0100 <maerwald> functional sort algorithms are usually slow
2022-01-25 23:30:58 +0100 <SrPx> monochrom: why not
2022-01-25 23:31:16 +0100 <maerwald> I think I wrote a bottom up mergesort in Go
2022-01-25 23:31:31 +0100wombat871(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Quit: WeeChat 2.2-dev)
2022-01-25 23:31:32 +0100 <monochrom> "quack doctor" has the connotation of imposter
2022-01-25 23:32:05 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-01-25 23:32:06 +0100imalsogreg(~imalsogre@c-73-172-114-3.hsd1.md.comcast.net) (Remote host closed the connection)
2022-01-25 23:32:11 +0100 <SrPx> looks appropriate
2022-01-25 23:32:23 +0100 <SrPx> maerwald: what that means?
2022-01-25 23:33:39 +0100 <maerwald> SrPx: it's an iterative version
2022-01-25 23:34:01 +0100 <SrPx> I mean, being bottom-up
2022-01-25 23:34:19 +0100 <maerwald> SrPx: https://gogs.hasufell.de/hasufell/go-challenge/src/branch/master/src/numbers/sort/sort.go#L76
2022-01-25 23:35:31 +0100 <maerwald> http://www.mathcs.emory.edu/~cheung/Courses/171/Syllabus/7-Sort/merge-sort5.html
2022-01-25 23:36:05 +0100 <maerwald> I think mine was also significantly faster for the given input than the Go stdlib one
2022-01-25 23:36:12 +0100 <SrPx> I see
2022-01-25 23:36:34 +0100max22-(~maxime@2a01cb08833598002ff4585ddd5d42b3.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2022-01-25 23:36:34 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2022-01-25 23:36:56 +0100 <maerwald> but for loops with index tricks are a plague
2022-01-25 23:40:25 +0100 <maerwald> today we have AI to sort lists for you
2022-01-25 23:40:26 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Read error: Connection reset by peer)
2022-01-25 23:40:59 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 23:41:08 +0100 <monochrom> Do we also have AI to make lists that need sorting?
2022-01-25 23:41:21 +0100 <monochrom> That would complete the cicle :)
2022-01-25 23:42:02 +0100 <maerwald> no, that's a student assignment
2022-01-25 23:43:31 +0100 <monochrom> heh
2022-01-25 23:46:23 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922) (Remote host closed the connection)
2022-01-25 23:46:26 +0100little_mac(~little_ma@2601:410:4300:3ce0:b072:e210:a25e:85eb) (Remote host closed the connection)
2022-01-25 23:46:27 +0100Brandon_IX(~brandon@178-79-138-117.ip.linodeusercontent.com) (Quit: Lost terminal)
2022-01-25 23:46:28 +0100 <hpc> that part's easy, just take the students' sorting algorithms and run them over a sorted list
2022-01-25 23:46:31 +0100ix(~ix@2a02:8010:674f:0:cda6:d05:f0d7:4922)
2022-01-25 23:46:48 +0100 <hpc> guaranteed shuffle
2022-01-25 23:48:16 +0100 <monochrom> haha
2022-01-25 23:50:32 +0100neceve(~quassel@2.26.93.228) (Ping timeout: 240 seconds)
2022-01-25 23:50:53 +0100 <tomsmeding> SrPx: tried to run your code on larger lists, fills up my memory
2022-01-25 23:51:01 +0100 <tomsmeding> I have 32 GB so it's not that I have too little
2022-01-25 23:51:13 +0100 <SrPx> tomsmeding: does that not happen with `sort`?
2022-01-25 23:51:25 +0100 <tomsmeding> no
2022-01-25 23:51:32 +0100 <SrPx> anyway this is not to be taken too seriously. will probably be slower than bubblesort for reversely-sorted lists
2022-01-25 23:51:44 +0100 <tomsmeding> oh something is going wrong
2022-01-25 23:52:06 +0100 <SrPx> going wrong?
2022-01-25 23:52:27 +0100 <tomsmeding> I messed up copying your code
2022-01-25 23:52:37 +0100 <tomsmeding> can you please write code that makes -Wall scream less
2022-01-25 23:52:45 +0100 <SrPx> that said, I think quacksort would actually be quite fast if we had a way to pick a pivot that is close to the median of a list
2022-01-25 23:53:13 +0100 <tomsmeding> https://tomsmeding.com/ss/get/tomsmeding/3Yga30
2022-01-25 23:53:15 +0100 <tomsmeding> on random lists
2022-01-25 23:54:00 +0100 <SrPx> why is Wall so upset about shadowing?
2022-01-25 23:54:19 +0100 <tomsmeding> it's error-prone, and I kind of agree
2022-01-25 23:54:21 +0100alp(~alp@user/alp) (Ping timeout: 268 seconds)
2022-01-25 23:54:26 +0100 <tomsmeding> though here it's kind of a false positive
2022-01-25 23:54:31 +0100little_mac(~little_ma@2601:410:4300:3ce0:88e2:d81e:ca89:4a84)
2022-01-25 23:54:58 +0100 <SrPx> hmm, so it is slightly faster?
2022-01-25 23:55:43 +0100 <tomsmeding> seems so, on random lists
2022-01-25 23:55:54 +0100imalsogreg(~imalsogre@2601:147:300:f930::ee17)
2022-01-25 23:56:58 +0100 <SrPx> is there any really fast way to guess the median of a list without reading all elements? perhaps reading logN elements? (:
2022-01-25 23:57:04 +0100 <SrPx> if so then this algorithm could be practical
2022-01-25 23:57:27 +0100 <geekosaur> doubt it
2022-01-25 23:57:53 +0100 <EvanR> guess the median of an unsorted list
2022-01-25 23:57:53 +0100 <geekosaur> if the list is truly unsorted then there's no way to know if the list is end-heavy
2022-01-25 23:58:04 +0100 <EvanR> that's like compressing 2 random bits into 1 or something
2022-01-25 23:58:47 +0100Tuplanolla(~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.)
2022-01-25 23:58:53 +0100 <tomsmeding> SrPx: there's a standard way of guessing a sort-of median of a list https://stackoverflow.com/questions/12545795/explanation-of-the-median-of-medians-algorithm#12545866
2022-01-25 23:58:53 +0100 <SrPx> geekosaur: but after the first recursive pass you in theory have read all elements at least once, so there might be some way to carry an updateable median as a single int or something
2022-01-25 23:59:17 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 268 seconds)
2022-01-25 23:59:50 +0100 <SrPx> tomsmeding: oh interesting, I envy your googling skills
2022-01-25 23:59:54 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 268 seconds)