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